AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Formular korrekt Freigeben

Ein Thema von QuickAndDirty · begonnen am 2. Jun 2016 · letzter Beitrag vom 2. Jun 2016
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#11

AW: Formular korrekt Freigeben

  Alt 2. Jun 2016, 13:33
Man kann Objekte in den eigenen Events freigeben, allerdings nur dann, wenn in den aufrufenden Funktionen nicht nochmal auf das Objekt zugegriffen wird und man das nicht irgendwie unterbinden kann.
Also nach dem END deiner Event-Methode darf nicht nochmal auf das Objekt zugegriffen werden, dann kann man sowas machen.

Close bei der Form kann man überall aufrufen, da es die Form nicht sofort frei gibt, sondern der Form eine Message sendet, in der die Form freigegeben wird.
PS: Da gibt die Form sich dann auch in einer eigenen Methode selber frei.

Zitat:
Ich höre sowieso immer man soll das "ProcessMessages" nicht benutzen... warum ist mir entgangen...
Weil das "unvorhersehbare" Aktionen an der Stelle ausführt und das den aktuellen Arbeitspfad stören könnte?

Delphi-Quellcode:
Form.Caption := 'blubb';
Form.Close;
Application.ProcessMessages; // oder ShowMessage('Hallo');
ShowMessage(Form.Caption); // peng...
Neben der Message für CM_RELEASE können/werden hier auch noch viele andere Messages ausgeführt.
Es braucht also nichtmal Form.Close, wenn du z.B. vorher auf das [X] der Form klickst, aber das Ereignis/die Message erst jetzt verarbeitet würde.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  Button1.Tag := 1; // eine globale Variable
  for i := 1 to 15 do begin
    Sleep(1000);
    Application.ProcessMessages;
    Memo1.Lines.Add(Format('%d %d', [i, Button1.Tag]));
    Button1.Tag := Button1.Tag + 1;
  end;
end;
Knopf drücken und nach über 15 Sekunden nochmal drücken
und dann auch einmal Knopf drücken und innerhalb der 15 Sekunden nochmal drücken.
$2B or not $2B

Geändert von himitsu ( 2. Jun 2016 um 13:38 Uhr)
  Mit Zitat antworten Zitat
FarAndBeyond
(Gast)

n/a Beiträge
 
#12

AW: Formular korrekt Freigeben

  Alt 2. Jun 2016, 14:14
@himitsu
Danke für die Info...
Ich hab' auch schon aus 'nem Event Objekte freigegeben... hab' dafür aber auch schon Prügel bezogen in 'nem anderen Forum. Auch wenn das in dem Fall gefunzt hat.

Zitat:
Weil das "unvorhersehbare" Aktionen an der Stelle ausführt und das den aktuellen Arbeitspfad stören könnte?
und man sich damit sein "Release" zerschießt


Ja, manchmal sieht man das Fenster nicht, weil es zu sehr in der Mitte des Monitors direkt vor der Nase angezeigt wird...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 Uhr.
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