Problem z działaniem MessageDlg w Delphi

0

Witam napisałem sobie prostą funkcje usówającą wiersz ze StringGrida, która działa jak należy. Chciałem aby po naciśnieciu przycisku "Usun" najpierw wyskoczył MessageDlg z potwierdzeniem czy na pewno, ale nic sie nie wyświetla tylko od razu usówa wiersz.

procedure Tklienci.Button5Click(Sender: TObject);             //usun wiersz
var
a, b, x :integer;
begin
x := MessageDlg('Treść komunikatu',  mtConfirmation, [mbYes, mbNo], 0, mbYes);
  if x  = mrYes then begin
                      if StringGrid1.RowCount>1 then begin
                                                      for a:=0 to StringGrid1.ColCount-1 do
                                                      StringGrid1.Cells[a, StringGrid1.Row]:='';
                                                      //przesuniecie wszystkich wierszy o 1 w gore
                                                      for a:=0 to StringGrid1.RowCount-1 do
                                                       for b:=0 to StringGrid1.ColCount-1 do
                                                          begin
                                                            StringGrid1.Cells[b, StringGrid1.Row+a]:=trim(StringGrid1.Cells[b, StringGrid1.Row+1+a]);
                                                          end;
                                                      if StringGrid1.RowCount>2 then stringgrid1.rowcount := stringgrid1.rowcount - 1 ;
                                                     end;
                     end;
end; 

Piszę w Borland Delphi7. Proszę o pomoc

0

Podałeś o 1 parametr za dużo do MessageDlg. Instrukcje if zamieniłem na case.

var
  i, j: Integer;
begin
  case MessageDlg('Treść komunikatu',  mtConfirmation, [mbYes, mbNo], 0) of
    mrYes: begin
             if StringGrid1.RowCount > 1 then
              begin
                for i := 0 to StringGrid1.ColCount - 1 do
                   StringGrid1.Cells[i, StringGrid1.Row] := '';

                //przesuniecie wszystkich wierszy o 1 w gore
                for i := 0 to StringGrid1.RowCount - 1 do
                  for j := 0 to StringGrid1.ColCount - 1 do
                   begin
                     StringGrid1.Cells[j, StringGrid1.Row + i] :=
                       Trim(StringGrid1.Cells[j, StringGrid1.Row + 1 + i]);
                   end;

                if StringGrid1.RowCount > 2 then
                  StringGrid1.RowCount := StringGrid1.RowCount - 1;
              end;
           end;
  end;
end;
0

tylko że nadal ten sam problem... Klikam na usun wiersz i wiersz sie po prostu usuwa nie wyskakuje okienko z potwierdzeniem...

Edit: Kurde cos jest z moja formatka nie tak, bo jak zrobiłem to w nowym pliku delphi to wszystko śmiga. Nawet nie pokazuje nowo narysowanego przycisku. Jest gdzieś jakaś opcja blokowania ebycji którą mogłem przypadkowo zaznaczyć??

0

nie nie narysowałem zupełnie nowy button na formatce i po skompilowaniu sie on po prostu nie wyświetla

0

no wlasnie mam na true i kazdy inny komponent ktory ustawie nie pojawia sie
screen dla lepszego zrozumienia. Visible ustawione na true i w przypadku kazdego komponentu ten sam problem sie zrobił
user image

0

Załóżmy, że Twój plik projektu nazywa się Project1.dpr.
Usuń plik Project1.exe z folderu projektu (tam gdzie zapisujesz pliki źródłowe). Potem wykonaj (Menu > Project) Build Project1.

1 użytkowników online, w tym zalogowanych: 0, gości: 1