![]() |
Delphi-Version: 10.4 Sydney
TaskDialog in globaler Unit?
Hallo, ich frage mich ob es möglich ist, eigene Dialoge in einer globalen Unit unterzubringen. Ich versuche TTaskDialog als procedure aufzurufen. Aber schon beim Anlegen von
with TTaskDialog.Create(Self) do ... kommt die Fehlermeldung dass Self ein unbekannter Bezeichner ist. Frage funktioniert das überhaupt ohne eine Form im Hintergrund zu haben? Für Tipps wäre ich sehr dankbar. LG Harry |
AW: TaskDialog in globaler Unit?
Hallo,
1. Hast du eine Ahnung, was Self bedeutet? Dein Post lingt leider nicht danach. Self ist eine Referenz auf die eigene Objektinstanz. Nur: hast du eine Objektinstanz wenn du das in eine Prozedur packst? 2. Da Self so nicht geht, was ist denn die Alternative zu einer Objektinstanz? Nil! Damit hat der Taskdialog halt keinen "Owner" und du musst dich selber um dessen Freigabe kümmern. Ist ja aber machbar. Grüße TurboMagic |
AW: TaskDialog in globaler Unit?
Hallo TurboMagic,
jawoll ich habe keine Ahnung was Self bedeutet (bin Dilletant), aber ich bedanke mich für deinen wertvollen Hinweis mit"NIL". Ich habe es jetzt so am Laufen: procedure errorMessage(Message:String); begin with TTaskDialog.Create(NIL) do begin try MainIcon := tdiWarning; Caption := 'WARNUNG'; Title := Message; CommonButtons := [tcbClose]; Execute; finally Free; end; end; LG Harry |
AW: TaskDialog in globaler Unit?
Ich hole meine Antwort mal von deiner anderen Frage hier her.
![]() Zitat:
zum Owner: Wenn du selbst etwas freigibsts (Free), dann kümmerst du dich darum und es es muß niemand Anderes angegeben werden, welcher das macht. PS: es gibt CODE-Tags ala [DELPHI]...[/DELPHI], für deinen Quellcode, damit man ihn besser lesen kann. Und noch ein Tipp: wenn möglich, dann wollte man besser kein WITH benutzen. Es macht mehr Probleme, als man denkt sich damit Arbeit zu sparen, und irgendwann wirst du es bestimmt mal schmerzlich bereuen. |
AW: TaskDialog in globaler Unit?
Zitat:
1. Ja, Himitsu hat recht, besser kein with benutzen. 2. Wenn du vor dem Eingeben deines Codebeispiels den Delphi Helm über dem Texteditor hier im Forum anklickst und du deinen Codee dann zwischen die dadurch eingefügten Tags schreibst, wird der passend formatiert (jedenfalls so, wie du das einrückst etc.), sieht z. B. so aus:
Delphi-Quellcode:
3. Hier noch eine Variante ohne with:
procedure errorMessage(Message:String);
begin with TTaskDialog.Create(NIL) do begin try MainIcon := tdiWarning; Caption := 'WARNUNG'; Title := Message; CommonButtons := [tcbClose]; Execute; finally Free; end; end; end;
Delphi-Quellcode:
Grüße und weiter Erfolg
procedure errorMessage(Message:String);
var Dlg: TTaskDialog; begin Dlg := TTaskDialog.Create(NIL); try Dlg.MainIcon := tdiWarning; Dlg.Caption := 'WARNUNG'; Dlg.Title := Message; Dlg.CommonButtons := [tcbClose]; Dlg.Execute; finally Dlg.Free; end; end; TurboMagic |
AW: TaskDialog in globaler Unit?
Ich würde dennoch den Owner übergeben (kann ja "Self" als parameter sein) um bei solchen Dingen auch Modal nutzen zu können. Oder war es Parent... eins von beiden, ich nutz meist beides :)
|
AW: TaskDialog in globaler Unit?
So hier...
Delphi-Quellcode:
unit Unit8;
interface uses Winapi.Windows, System.Classes, Vcl.Forms, Vcl.Dialogs; procedure errorMessage(const AOwner: TComponent; const AMessage: string); implementation procedure errorMessage(const AOwner: TComponent; const AMessage: string); var Dlg: TTaskDialog; begin Dlg := TTaskDialog.Create(AOwner); try Dlg.MainIcon := tdiWarning; Dlg.Caption := 'WARNUNG'; Dlg.Title := AMessage; Dlg.CommonButtons := [tcbClose]; Dlg.ModalResult := MB_OK; Dlg.Execute; finally Dlg.Free; end; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz