Autor |
Beitrag |
MephistoFFF
      
Beiträge: 60
Win 7
|
Verfasst: Fr 12.12.08 18:42
Meine frage ist eigentlich ganz simpel: Wie fange ich das beenden über das standardmäßige rote "X" ab?
Also ich will nachdem auf das rote X geklicht wird noch befehle ausführen lassen, bevor sich die form schließt.
Wie kann ich das umsetzen?
Danke für eure Hilfe.
mfG
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Fr 12.12.08 18:44
CloseQuery ist das wort das du suchst! Gibs mal in die Hilfe ein und du wirst weiterkommen.
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 12.12.08 18:45
Oder einfach OnClose noch schnell das abarbeiten, was abzuarbeiten ist.
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Fr 12.12.08 19:29
Um was handelt es sich denn? Wenn du Variablen, die du in OnCreate erzeugt hast, wieder freigeben willst, ist OnDestroy die richtige Wahl. Willst du das Beenden vielleicht noch abbrechen, verwende OnCloseQuery. Für alles andere ist OnClose gedacht.
|
|
Chemiker
      
Beiträge: 194
Erhaltene Danke: 14
XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit
D7, BDS 2006, RAD Studio 2009+C++, Delphi XE2, XE3, VS 2010 Prof.
|
Verfasst: Fr 12.12.08 19:51
Hallo MephistoFFF,
um ein Programm nur mit einem Passwort zu schließen, verwende ich das onClose-Ereignis.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TfrmHauptMenue.FormClose(Sender: TObject; var Action: TCloseAction); var Prg_Ende: Boolean; begin Prg_Ende:= FALSE; TFormPassWort.PassWortFreigabe (PRG_Ende); if Prg_Ende then begin Action:= caFree; end else begin Action := caNone; end; end; |
Bis bald Chemiker
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Fr 12.12.08 20:17
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Chemiker
      
Beiträge: 194
Erhaltene Danke: 14
XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit
D7, BDS 2006, RAD Studio 2009+C++, Delphi XE2, XE3, VS 2010 Prof.
|
Verfasst: Fr 12.12.08 20:25
Hallo Xentar,
warum ist das unschön? Ich finde das eigentlich sehr übersichtlich.
Bis bald Chemiker
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 12.12.08 20:45
In neueren Delphi-Versionen funktioniert das, wenn man die Methode als class procedure deklariert. Innerhalb solcher Methoden kann dann aber natürlich nicht auf instanzspezifische Dinge wie eigene Felder zugegriffen werden.
|
|
Chemiker
      
Beiträge: 194
Erhaltene Danke: 14
XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit
D7, BDS 2006, RAD Studio 2009+C++, Delphi XE2, XE3, VS 2010 Prof.
|
Verfasst: Fr 12.12.08 20:54
Hallo Xentar und DeddyH,
genau, nicht eine Procedure sondern ich setze eine Function ein.
Ist nur ein Beispiel, Passwort ist nicht sicher! Damit wird ein Button [Beenden] freigegeben.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40:
| type TFormPassWort = class(TForm) StatusBar1: TStatusBar; BitBtn2: TBitBtn; BitBtn3: TBitBtn; Edit1: TEdit; Label1: TLabel; procedure Edit1Change(Sender: TObject); private public class function PassWortFreigabe (out Rueckgabe : Boolean): Boolean; end;
implementation
{$R *.dfm}
class function TFormPassWort.PassWortFreigabe (out Rueckgabe : Boolean): Boolean; begin with TFormPassWort.Create(nil) do try Result := ShowModal=mrok; if Result then Rueckgabe := TRUE else Rueckgabe := FALSE; finally free; end; end;
procedure TFormPassWort.Edit1Change(Sender: TObject); begin if Edit1.Text = 'P' then BitBtn3.Enabled := TRUE; end;
end. |
Bis bald Chemiker
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 12.12.08 20:57
Sry, ich hatte Klassenmethoden sagen wollen, aber der Begriff war mir nicht mehr eingefallen 
|
|
turboPASCAL
      
Beiträge: 193
Erhaltene Danke: 1
Win XP / Vischda
D6 PE / D2005 PE
|
Verfasst: Fr 12.12.08 20:59
[ot] Ja, das kommt so mit dem Alter...  [/ot]
_________________ Nein, ich bin nicht der turboPASCAL aus der DP, ich seh nur so aus...
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 12.12.08 21:01
[OT] Immerhin bin ich nicht der Älteste in diesem Forum  [/OT]
|
|
turboPASCAL
      
Beiträge: 193
Erhaltene Danke: 1
Win XP / Vischda
D6 PE / D2005 PE
|
Verfasst: Fr 12.12.08 21:05
_________________ Nein, ich bin nicht der turboPASCAL aus der DP, ich seh nur so aus...
|
|
Chemiker
      
Beiträge: 194
Erhaltene Danke: 14
XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit
D7, BDS 2006, RAD Studio 2009+C++, Delphi XE2, XE3, VS 2010 Prof.
|
Verfasst: Fr 12.12.08 21:10
[OT] ich auch nicht, glaube ich [OT]
Bis bald Chemiker
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Fr 12.12.08 22:00
Ach, Klassenmethoden, daran hab ich gar nicht gedacht
Hab zwar auch D2007, die Dinger aber noch nie benutzt..
ich würd es immer noch auf die "klassiche" Art machen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.CloseQuery; begin MyPasswordDLG := TPasswordDLG.Create(self); try MyPasswordDLG.ShowModal; CanClose := MyPasswordDLG.PassWortFreigabe; finally FreeAndNil(MyPasswordDLG); end; end; |
Mal so grob ausm Kopf geschriebem
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 12.12.08 22:20
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Sa 13.12.08 01:54
mkay, geb mich geschlagen, habs grad in D5 ausprobiert, und da ging das auch schon durch den Compiler.
Komisch, könnt schwören, dass diese class function mal bei D2006 auf der "New features" Liste stand.
Naja, habs trotzdem noch nie verwendet, und leb immernoch  aber könnte ich in Zukunft auch mal verwenden, jo.
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Sa 13.12.08 10:28
_________________ Na denn, dann. Bis dann, denn.
|
|
Mitmischer 1703
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Sa 13.12.08 11:23
Was für einen Sinn hat dein schöner Knopf, wenn der Taskmanager doch diesen gar nich braucht? 
_________________ Die Lösung ist nicht siebzehn.
|
|
Chemiker
      
Beiträge: 194
Erhaltene Danke: 14
XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit
D7, BDS 2006, RAD Studio 2009+C++, Delphi XE2, XE3, VS 2010 Prof.
|
Verfasst: Sa 13.12.08 14:24
Hallo Mitmischer 1703,
Mitmischer 1703 hat folgendes geschrieben: | Was für einen Sinn hat dein schöner Knopf, wenn der Taskmanager doch diesen gar nich braucht? |
???
Bis bald Chemiker
|
|