Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Standard-Dialoge (https://www.delphipraxis.net/40950-standard-dialoge.html)

inherited 29. Mai 2007 15:42

Re: Standard-Dialoge
 
Es handelt sich hier aber im ein Set.

DGL-luke 29. Mai 2007 15:45

Re: Standard-Dialoge
 
oh. klar. sorry.

Sidorion 29. Mai 2007 15:50

Re: Standard-Dialoge
 
@Luke: Normalerweise gebe ich Dir uneingeschränkt recht, da 00110100 + 00001100 eben 01000000 sind und nicht, wie evtl. erwartet 00111100.
Da die Konstanten aber von Microsoft klugerweise(?) so gewählt wurden, dass jeweils nur ein Bit gesetzt ist, kann man in diesem Fall wohlwollend darüber hinwegsehen (solange man nicht die kombinierten, wie mbYesNoCancel oder so addiert).
@inherited: En contraire, mon ami. Das sind pure Integerkonstanten, auch die kombinierten.

inherited 29. Mai 2007 15:55

Re: Standard-Dialoge
 
Ändert nichts an der Tatsache das sich Sets ohne Probleme mit + zusammenprökeln lassen.

Hawkeye219 29. Mai 2007 21:52

Re: Standard-Dialoge
 
Hallo,

Zitat:

Zitat von Sidorion
@inherited: En contraire, mon ami. Das sind pure Integerkonstanten, auch die kombinierten.

Sicher?

Delphi-Quellcode:
// aus "Dialogs.pas"
const
  mbYesNo = [mbYes, mbNo];
  mbYesNoCancel = [mbYes, mbNo, mbCancel];
  mbYesAllNoAllCancel = [mbYes, mbYesToAll, mbNo, mbNoToAll, mbCancel];
  mbOKCancel = [mbOK, mbCancel];
  mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];
  mbAbortIgnore = [mbAbort, mbIgnore];

// aus "Windows.pas"
const
  MB_OK = $00000000;
  MB_OKCANCEL = $00000001;
  MB_ABORTRETRYIGNORE = $00000002;
  MB_YESNOCANCEL = $00000003;
  MB_YESNO = $00000004;
  MB_RETRYCANCEL = $00000005;
Gruß Hawkeye

3_of_8 29. Mai 2007 22:27

Re: Standard-Dialoge
 
Richtig. Nix da Integerkonstanten. In der Delphi-Hilfe ist TMsgBtn als enum definiert (mbOK, mbCancel...) und TMsgButtons als set of TMsgBtn. mbOkCancel und so weiter sind schließlich Set-Konstanten vom Typ TMsgButtons.

jfheins 29. Mai 2007 23:01

Re: Standard-Dialoge
 
Nur um Klarheit zu schaffen:

Hier handelt es sich um den Unterschied zwischen der Win32-API Funktion MessageBox und der entsprechenden Kapselung von Delphi unter dem Namen MessageDlg.

Die erstere arbeitet natürlich mit Integerkonstanten, die man idealerweise mit den bitoperatoren kombiniert (or, and, xor) wobei die letztere mit Sets arbeitet, die man mit den Set-operatoren (gibts das Wort?) kombiniert - hierzu auch das Tutorial zum Thema Sets ;) .

3_of_8 29. Mai 2007 23:11

Re: Standard-Dialoge
 
Ja, und wir haben die ganze Zeit über über MessageDlg gesprochen.

Dezipaitor 30. Mai 2007 10:14

Re: Standard-Dialoge
 
Zitat:

Zitat von 3_of_8
Ja, und wir haben die ganze Zeit über über MessageDlg gesprochen.

Der ist natürlich auch nicht Threadsicher. :D

Sidorion 30. Mai 2007 13:15

Re: Standard-Dialoge
 
Ja bei Sets ist das '+' völlig in Ordnung und entspricht der Mengenoperation 'Vereinigung'. Das '*' wäre dann ein 'Schnittmenge'. In diesem Fall ist Or als Boolscher Operator Disjunktion sogar falsch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:55 Uhr.
Seite 3 von 4     123 4      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz