AGB  ·  Datenschutz  ·  Impressum  







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

FireMonkey Sammelthread

Ein Thema von mquadrat · begonnen am 1. Sep 2011 · letzter Beitrag vom 27. Jul 2013
Antwort Antwort
Seite 5 von 5   « Erste     345   
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: FireMonkey Sammelthread

  Alt 3. Mai 2013, 22:22
KeyDown feuert bei Tab im FMX nicht.
Ich habe aber auch noch nicht gefunden, wo das vorher abgefangen wird.
Delphi-Quellcode:
procedure TssCellEdit.KeyDown(var Key: Word; var KeyChar: WideChar; Shift: TShiftState);
begin
  // CodeSite.Send(IntToStr(Byte(KeyChar)) + ' ' + IntToStr(Key) + ' ' + IntToStr(Integer(ssShift)));
  if ((Key = 13) or (Key = 27)) and (KeyChar = #0) and (Shift = []) then
    SelectParentCell(Self, True)
  else if (KeyChar = #0) and (Shift = []) then
  begin
    case Key of
      33: // PageUp
        if (CustomItemsBox <> nil) then
        begin
          CustomItemsBox.ShouldFocused := True;
          CustomItemsBox.MoveFocusPageUp;
        end
        else
          inherited;
      34: // PageDown
        if (CustomItemsBox <> nil) then
        begin
          CustomItemsBox.ShouldFocused := True;
          CustomItemsBox.MoveFocusPageDown;
        end
        else
          inherited;
...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: FireMonkey Sammelthread

  Alt 3. Mai 2013, 22:31
Ich meinte das Form...
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: FireMonkey Sammelthread

  Alt 3. Mai 2013, 23:04
Da feuert Tab auch nicht (würde dann auch nicht wirklich helfen, da das Gitter das eigentlich intern regeln soll).

Ich vermute, dass "die Plattform" das vorher abfängt, finde aber den tatsächlichen Ablauf nicht.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: FireMonkey Sammelthread

  Alt 10. Jul 2013, 23:16
Ich erzeuge aus der Datenschicht AniIndicators auf gebundenen GUI-Controls um eine längere Beschäftigung anzuzeigen.

Sichtbar werden diese erst durch Application.ProcessMessages. Und dann wird nix animiert, solange die Anwendung beschäftigt ist.
Zu laufen beginnen sie wenn der Prozess fertig ist und ich die AniIndicators nicht zerstöre.

Gibt es dazu Tipps?

Mann, Mann, Mann, da denkt man, man hat eine schöne tolle neue und leistungsfähige GUI...

Delphi-Quellcode:
procedure TssCtrl.StartAniIndicator;
begin
  if Owner is TControl then
  begin
    fAniIndicator := TAniIndicator.Create(Owner);
    fAniIndicator.Align := TAlignLayout.alCenter;
    fAniIndicator.Parent := (Owner as TControl);
    fAniIndicator.Enabled := True;
    RefreshData;
    Application.ProcessMessages;
  end;
end;

procedure TssCtrl.EndAniIndicator;
begin
  FreeAndNil(fAniIndicator);
  RefreshData;
end;
Angehängte Grafiken
Dateityp: jpg ani.jpg (59,4 KB, 37x aufgerufen)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#5

AW: FireMonkey Sammelthread

  Alt 11. Jul 2013, 04:05
Ist doch ganz "einfach":
Delphi-Quellcode:
type
  TFormHelper = class helper for TForm
    procedure PaintRects(const UpdateRects: array of TRectF);
  end;

procedure TFormHelper.PaintRects(const UpdateRects: array of TRectF);
begin
  inherited;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Time: Cardinal;
begin
  AniIndicator1.Visible:=true;
  AniIndicator1.Enabled:=true;
  try
    Time:=TThread.GetTickCount;
    while TThread.GetTickCount-Time<=5000 do //<- 5 Sekunden Blockierung des Hauptthreads
    begin
      Sleep(100);
      if Assigned(AniThread)
        then AniThread.OnTimer(nil); //<- Animation(en) am Leben erhalten
      PaintRects([AniIndicator1.ParentedRect]); //<- Indikator neu darstellen
    end;
  finally
    AniIndicator1.Visible:=false;
    AniIndicator1.Enabled:=false;
  end;
end;
Natürlich ist wieder alles so verpackt (im Implementationteil deklarierte Objekte, im protected-Abschnitt versteckte Methoden), daß man auf "normalem" Weg nicht richtig herankommt. Und (T)AniThread ist unter Windows selbstverständlich kein Thread (wäre ja auch sehr naiv, so etwas aus dem Namen zu schlußfolgern), sondern ein normaler Timer, der logischerweise nicht funktioniert, wenn die Nachrichtenschleife blockiert ist.

Wenn ich dann so was
Delphi-Quellcode:
destructor TAniIndicator.Destroy;
begin
  if Assigned(FFill) then
    FreeAndNil(FFill);
  inherited;
end;
und so was
Delphi-Quellcode:
var
  [...]
  AniThread: TTimer;
sehe, weiß ich wieder, wo das durchdachte Design herkommt...
Thomas Nitzschke
Google Maps mit Delphi

Geändert von Thom (11. Jul 2013 um 11:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: FireMonkey Sammelthread

  Alt 11. Jul 2013, 11:44
@Thom
Danke! Das schaue ich mir heute Abend mal an.

Da kommt mir wieder der Vergleich zu einer Spieleentwicklung in den Sinn (http://www.delphipraxis.net/175033-f...-schlecht.html). Wenn da ein Alientreffer verarbeitet würde bleiben doch die anderen Kugeln auch nicht ein paar Sekunden unbewegt in der Luft hängen. Echt zum

Eine flüssige Progressbar braucht ja wohl auch entsprechende Klimmzüge. (Es gab mal einen Hinweis dazu, finde ich aber gerade nicht auf die Schnelle.)


...man sollte halt wohl doch auf den FireDog warten, der den Affen auf den Baum jagt...

Das schlimme ist ja, wenn man allein hier aus der DP ein paar Leute zusammensuchen könnte würde ein ähnliches aber vernünftig umgesetztes Konzept echt Spaß bringen.

Sobald ich im Lotto gewinne miete ich eine Garage...
(Alternative zu den LB habe ich ja schon. )
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: FireMonkey Sammelthread

  Alt 11. Jul 2013, 12:01
Offtopic: Ich habe meine Firemonkey Entwicklungen erstmal auf Eis gelegt; bis das Teil endlich rund läuft. Ich denke, mit XE5 (oder halt Android) aktiviere ich es wieder, aber bis dahin kann und will ich mich leider nicht mehr damit rumschlagen. Schade, aber selbst meine Mac Projekte laufen nur mehr schlecht als recht und mit sehr sehr viel Gepfusche
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: FireMonkey Sammelthread

  Alt 12. Jul 2013, 15:44
Als TIdleIndicator würde das Ding (TAniIndicator) andererseits perfekt arbeiten.
Es rödelt nämlich sofort los, wenn die Anwendung gerade nix tut.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#9

AW: FireMonkey Sammelthread

  Alt 13. Jul 2013, 12:52
...Ich denke, mit XE5 (oder halt Android) aktiviere ich es wieder, aber bis dahin kann und will ich mich leider nicht mehr damit rumschlagen...
Wenn mit XE5 dann Android kommen sollte, musst du aber noch mindestens bis XE8 warten um es produktiv nutzen zu können.
Gruß
Cookie
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 5   « Erste     345   


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 11:25 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