Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: Nicola - Febbraio 05, 2015, 10:55:13 pm

Titolo: MessageDlg
Inserito da: Nicola - Febbraio 05, 2015, 10:55:13 pm
Non riesco a capire da cosa dipenda; al click in un radio group procedo con una stampa;
prima che la stampa sia inviata su carta, chiedo conferma tramite un MessageDlg; il problema è che il messaggio di dialogo appare, confermo, stampo e poi riappare lo stesso messaggio; da cosa potrebbe dipendere?

Codice: [Seleziona]
procedure TTfMenuStampe.RgCategorieClick(Sender: TObject);
var i,y:integer;
    sceltacategoria:string;
    arc:array[1..maxelcat] of Cespite;
    buttonSelected:integer;
    numrigdst:integer;
begin
i:=-1;y:=0;
  repeat
  i:=i+1;y:=y+1;
  if i=RgCategorie.ItemIndex then sceltacategoria:=arrcate[y].CodTipo;
  until y=idxc;
  AzzeraCespite;
for i:=1 to idx do arc[i]:=ces;
y:=0;
for i:=1 to idx do begin
                   if sceltacategoria=arrces[i].CodCat.CodTipo then begin
                                                                    inc(y);
                                                                    arc[y]:=arrces[i];
                                                                    end;

                   end;
for i:= 1 to idx do arrces[i]:=ces;
for idx:=1 to y do arrces[idx]:=arc[idx];

if MessageDlg('RICHIESTA', 'Procedo con la stampa?', mtConfirmation,
   [mbYes, mbNo, mbIgnore],0) = mrYes  then stampariga;

RgCategorie.ItemIndex:=-1;
RgCategorie.Visible:=False;

end;
Titolo: Re:MessageDlg
Inserito da: nomorelogic - Febbraio 07, 2015, 02:48:42 pm
così non saprei, hai provato a mettere un breakpoint alla fine di "stampariga" e poi proseguire passo passo?
Titolo: Re:MessageDlg
Inserito da: Nicola - Febbraio 07, 2015, 02:57:35 pm
Per il break point ok, per il passo passo come si fa ? In turbo pascal si usava F7 o F9
Titolo: Re:MessageDlg
Inserito da: xinyiman - Febbraio 07, 2015, 03:35:51 pm
Per il break point ok, per il passo passo come si fa ? In turbo pascal si usava F7 o F9
F8
Titolo: Re:MessageDlg
Inserito da: Nicola - Febbraio 08, 2015, 03:46:40 pm
Non saprei proprio il motivo ma se tolgo questo
RgCategorie.ItemIndex:=-1;   
il processo viene gestito correttamente; ma che c'entra un Radio Group, con MessageDlg
Titolo: Re:MessageDlg
Inserito da: Antonello - Febbraio 09, 2015, 09:46:00 am
forse perchè impostare l'itemindex del rg da codice equivale a fare click con il mouse...
Titolo: Re:MessageDlg
Inserito da: Nicola - Febbraio 09, 2015, 09:52:57 am
E quindi come potrei risolvere? Ho necessità di azzerare l'indice.
Titolo: Re:MessageDlg
Inserito da: Antonello - Febbraio 09, 2015, 09:59:48 am
prova così

RgCategorie.OnClick := nil;
RgCategorie.ItemIndex:=-1;   
RgCategorie.OnClick := @RgCategorieClick;
Titolo: Re:MessageDlg
Inserito da: Nicola - Febbraio 09, 2015, 05:04:34 pm
Cosi va perfettamente! Grazie di cuore  :) :)
Titolo: Re:MessageDlg
Inserito da: Antonello - Febbraio 10, 2015, 08:18:05 am
prego, ma forse era meglio se controllavi il valore di RgCategorie.ItemIndex prima di mostrare la finestra di dialogo  :)
Titolo: Re:MessageDlg
Inserito da: Nicola - Febbraio 10, 2015, 09:16:08 am
ehm.. non ho capito  :-[
Titolo: Re:MessageDlg
Inserito da: Antonello - Febbraio 10, 2015, 09:47:00 am
if RgCategorie.ItemIndex <> -1 then
   if MessageDlg('RICHIESTA', 'Procedo con la stampa?', mtConfirmation,
      [mbYes, mbNo, mbIgnore],0) = mrYes  then stampariga;
Titolo: Re:MessageDlg
Inserito da: Antonello - Febbraio 10, 2015, 09:53:15 am
poi se tutto l'ambaradan di codice ti serve solo per la stampa allora lo sposti all'interno della seconda if cosi non viene eseguito inutilmente se non devi stampare

if rgCategorie.ItemIndex<>-1 then
   if MessageDlg('RICHIESTA', 'Procedo con la stampa?', mtConfirmation,
      [mbYes, mbNo, mbIgnore],0) = mrYes  then begin
     
      ambardand di codice
     
      stampariga;
   end;
Titolo: Re:MessageDlg
Inserito da: Nicola - Febbraio 10, 2015, 10:38:25 am
Capito grazie.  ;D