[Delphi] dziwna sprawa z kodem !!!

0

Na zdarzeniu OnContexPopup komponentu Shape jest taki oto kod:

IF colordialog1.Execute THEN shape1.brush.Color:=colordialog1.color;

Wszyscy wiedzą, że powoduje to wyświetlenie ColorDialog z wyborem koloru jaki ma być ustawiony w Shape1. Nie rozumiem tylko, jak ten Color Dialog może się włączać tym poleceniem. Przeciez otwarcie jest zawarte w instrukcji warunkowej IF. Dla mnie to wygląda tak: "Jezeli Color dialog jest otwarty, to....", ale jednak jak widać tak nie jest.

Czy to znaczy, że w intrukcjach warunkowych (w deklaracji warunków!) można wydawać procedury ??

Z powyższego przykładu wynika, że tak.

0

Procedury nie można, ale ponieważ jest to funkcja, która w tym przypadku zwraca wartość boolean jest możliwe jej użycie. Jeżeli zwracałaby inna wartosc to porównaj ją z inną wartością (np ze zmienną).

Powodzenia [hurra]

0

Na zdarzeniu OnContexPopup komponentu Shape jest taki oto kod:

IF colordialog1.Execute THEN shape1.brush.Color:=colordialog1.color;

Wszyscy wiedzą, że powoduje to wyświetlenie ColorDialog z wyborem koloru jaki ma być ustawiony w Shape1.

Raczej powinno być:

colordialog1.Color :=shape1.brush.Color ;
IF colordialog1.Execute THEN
shape1.brush.Color:=colordialog1.color;

...
"Jezeli Color dialog jest otwarty, to....

Jeżeli ColorDialog zwróci true (czyli wybierzesz jakiś kolor, bo jeśli dasz cancel to zwraca False), to...

0

Pochwalony!
Przeważnie się właśnie tak przy dialogach, czyli np. ColorDialog pisze if ColorDialog1.Execute then {...}. Można także zapisać bez if. Wyglądałoby to tak:

ColorDialog1.Execute;
{...}

z tą właśnie różnicą, że jeżeli będzie jakiś błąd przy odpalaniu ColorDialog'a w tym drugim przykładzie, będą następowały dalsze procedurki/funkcje, a to może spowodować wadliwe działanie programu. Piszemy to po if, właśnie aby uniknąć błędów.

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