Einzelnen Beitrag anzeigen

Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#11

AW: Procedure während gedrückthalten eines Buttons

  Alt 8. Mai 2020, 13:49
Delphi-Quellcode:
procedure TF_TagNacht.Bt_BlitzMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  B := true;
  if B = true then
    begin
     Im_Wolke1.Picture.LoadFromFile('Regen.ico');
    end;
end;

procedure TF_TagNacht.Bt_BlitzMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 B := false;
  if B = false then
    begin
     Im_Wolke1.Picture.LoadFromFile('Wolke.ico');
    end;
end;
Wir haben es jetzt nach ein bisschen rumprobieren so gelöst. Danke für den Tipp mit der Maus. Wir waren davon ausgegangen dass diese Ereignisse nur für bewegungen mit der Maus sind.
2 Sachen sind mir dabei gleich aufgefallen.

1) Wenn du in einer Zeile B auf True oder False setzt, dann brauchst du nicht in der darauffolgenden Zeile genau das wieder per If abfragen. Logischerweise kann B dann gar keinen anderen Zustand haben.

2) NIEMALS IF B = True then . If erwartet in der Bedingung ein boolsches Ergebnis. B ist abet schon eine Boolsche Variable. Einzig richtig wäre hier IF B then... oder IF not B then ... So sieht das besser aus:
Delphi-Quellcode:
procedure TF_TagNacht.Bt_BlitzMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  B := true;
  Im_Wolke1.Picture.LoadFromFile('Regen.ico');
end;

procedure TF_TagNacht.Bt_BlitzMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 B := false;
 Im_Wolke1.Picture.LoadFromFile('Wolke.ico');
end;
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder ( 8. Mai 2020 um 13:51 Uhr)
  Mit Zitat antworten Zitat