AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Button gibt sich selbst bei klick frei
Thema durchsuchen
Ansicht
Themen-Optionen

Button gibt sich selbst bei klick frei

Ein Thema von QuickAndDirty · begonnen am 20. Jan 2017 · letzter Beitrag vom 3. Feb 2017
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: Button gibt sich selbst bei klick frei

  Alt 20. Jan 2017, 11:08
Entweder verzögert löschen.
Timer oder siehe TForm.Release

Oder den nachfolgenden Code überspringen.
Abort
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.058 Beiträge
 
Delphi 12 Athens
 
#2

AW: Button gibt sich selbst bei klick frei

  Alt 20. Jan 2017, 11:23

Also es gibt keine MessageQueue mehr?

Abort hört sich gut an. Das funktioniert bei Datenbanken ja auch.

Gibt es sowas wie Release für alle GUI objekte? Weil ein ListItem ist ja nun keine TForm.

Edit:
Jo es gibt ein Release für TListitem, gleich mal testen

Edit2:
Release scheint zu funktionieren. Vielen Dank!

Edit3: Realease scheint wohl nur unter Windows zufunktionieren.
Andreas
Nobody goes there anymore. It's too crowded!

Geändert von QuickAndDirty (20. Jan 2017 um 12:28 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.058 Beiträge
 
Delphi 12 Athens
 
#3

AW: Button gibt sich selbst bei klick frei

  Alt 20. Jan 2017, 13:12
Entweder verzögert löschen.
Timer oder siehe TForm.Release

Oder den nachfolgenden Code überspringen.
Abort
"Abort" würde auf Android erstmal funktionieren. Es ist eine komische Lösung.

Das "Freigeben" passiert in einer Refresh Methode die halt erst alles abräumt und dann alles neu lädt...die selbe Methode benutze ich beim erstellen des Formulars.
Ich wünschte es gäbe einen offiziellen weg sowas anzuschieben ohne Abort.
Andreas
Nobody goes there anymore. It's too crowded!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Button gibt sich selbst bei klick frei

  Alt 20. Jan 2017, 16:32
TThread-Queue führt nichts verzögert aus, wenn es im Hauptthread aufgerufen wird ... man müsste erst einen anderen Thread starten ud dann darin das Queue aufrufen
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.058 Beiträge
 
Delphi 12 Athens
 
#5

AW: Button gibt sich selbst bei klick frei

  Alt 23. Jan 2017, 10:11
TThread-Queue führt nichts verzögert aus, wenn es im Hauptthread aufgerufen wird ... man müsste erst einen anderen Thread starten ud dann darin das Queue aufrufen
Ok. Deswegen hat es nicht geklappt.
Wäre die Methode zu bevorzugen?
1.Thread erzeugebn der dazu bestimmt ist die Oberfläche(Zwei TlistViews) neuzuladen.
2.Thread ausführen.
3.Im Thread Synchronisation mit Hauptthread auslösen durch Übergabe der Reload methode an TThread.Queue(nil,Reload);

Wieso hat das alles unter Delphi XE8 geklappt? Gab es da die Touch-Animationen noch nicht?
Andreas
Nobody goes there anymore. It's too crowded!
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.058 Beiträge
 
Delphi 12 Athens
 
#6

AW: Button gibt sich selbst bei klick frei

  Alt 23. Jan 2017, 16:55
Hab in meiner "commonfunctions" unit folgendes gebaut
Delphi-Quellcode:
TQThread = Class(TThread)
private
Public
  ThreadMethod:TThreadMethod;
  Procedure Execute;Override;
end;
Procedure QueueMethod(aThreadMethod:TThreadMethod);

implementation


Procedure QueueMethod(aThreadMethod:TThreadMethod);
var aThread:TQThread;
Begin
  aThread := TQThread.Create(true);
  aThread.FreeOnTerminate := True;
  aThread.ThreadMethod := aThreadMethod;
  aThread.Resume;
End;


{ TQThread }

procedure TQThread.Execute;
var i,j :integer;
begin
  For i := 0 to 10 do j := j+1;// Damit der Kompiler die Zeile darunter nicht wegoptimiert.
  TThread.Queue(nil,ThreadMethod);
end;
Rufe das wie folgt auf
Delphi-Quellcode:
procedure TAuswahlView.Reload;
begin
  QueueMethod(self.InternalReload);
end;
Funktioniert erschreckend gut. Bis jetzt. Werde es mal auf weitere bereiche ausdehnen und testen.Vielleicht funktioniert dann wieder alles wie es soll.
Andreas
Nobody goes there anymore. It's too crowded!
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.212 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Button gibt sich selbst bei klick frei

  Alt 23. Jan 2017, 17:00
Zitat:
Damit der Kompiler die Zeile darunter nicht wegoptimiert
Was
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Button gibt sich selbst bei klick frei

  Alt 23. Jan 2017, 17:04
Wegoptimieren wird er das nicht. Sooooo schlau ist der nun auch nicht, daß er den Thread drumrum einfach weglässt.

Pssst: http://www.delphipraxis.net/179193-t...der-queue.html -> siehe Antwort #9 und hier nochmal die Kurzfassung davon:
Delphi-Quellcode:
TThread.CreateAnonymousThread(procedure
  begin
    Queue(AThread, procedure
      begin
        // mach hier irgendwas verzögert
      end);
  end).Start;
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (23. Jan 2017 um 17:06 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:21 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