AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Brennende Hinweise (FMX-Hints - THintManager 1.3)

Brennende Hinweise (FMX-Hints - THintManager 1.3)

Ein Thema von himitsu · begonnen am 9. Aug 2012 · letzter Beitrag vom 12. Dez 2013
 
Benutzerbild von himitsu
himitsu

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

AW: Brennende Hinweise (FMX-Hints)

  Alt 17. Aug 2012, 23:33
Nur noch eine kleine Erweiterung.

- Im OnShowHint kommt man nun auch an das ElternControl ran, wo der Hint dran hängt, wenn es Eines geben sollte.

- Und der nachfolgende Code für http://www.delphipraxis.net/169822-f...iremonkey.html

Delphi-Quellcode:
procedure TForm9.Edit3Exit(Sender: TObject); // OnExit des Edit3
begin
  if Edit3.Text = 'then
    TExitManager.DontExit(Sender); // TExitManager.DontExit(Sender, 'Bitte einen Wert eingeben.');
end;
Der Code entspricht in etwa Folgendem, so wie man es aus der VCL kennt, was aber im FMX nicht mehr funktioniert.
Delphi-Quellcode:
// im OnExit des Edit3
if Edit3.Text = 'then begin
  ShowMessage('Fehlerhafte Eingabe');
  Edit1.SetFocus;
end;
Delphi-Quellcode:
type
  TExitManager = class abstract
  private class var
    FManager: THintManager;
    FGlow: TGlowEffect;
  private
    class procedure HideHint(Sender: TObject);
    class function ShowHint(Sender: TObject; Form: TCustomForm; Position: TRectF; Text: string; Image: THintImage; AssignedComp: TControl): Boolean;
  public
    class procedure DontExit(Sender: TObject; UserMessage: string = '');
    class destructor Destroy;
  end;

class destructor TExitManager.Destroy;
begin
  FreeAndNil(FManager);
  FreeAndNil(FGlow);
end;

class procedure TExitManager.DontExit(Sender: TObject; UserMessage: string);
begin
  if not (Sender is TControl) then
    raise Exception.Create('nee, so nich');
  if not Assigned(FManager) then begin
    FManager := THintManager.Create(nil);
    FManager.GlowColor := TAlphaColorRec.Firebrick;
    FManager.GlowEnabled := True;
    FManager.OnShowHint := ShowHint;
    FManager.OnHideHint := HideHint;
    FGlow := TGlowEffect.Create(nil);
    FGlow.GlowColor := TAlphaColorRec.Firebrick;
  end;
  if Trim(UserMessage) = 'then
    UserMessage := 'Fehlerhafte Eingabe';
  FManager.ShowHint(TControl(Sender), UserMessage, hiDefault, True);
  (TControl(Sender) as IControl).DoEnter;
  Abort;
end;

class procedure TExitManager.HideHint(Sender: TObject);
begin
  FGlow.Parent := nil;
end;

class function TExitManager.ShowHint(Sender: TObject; Form: TCustomForm; Position: TRectF; Text: string; Image: THintImage; AssignedComp: TControl): Boolean;
begin
  //AssignedComp.InsertObject(0, FGlow); // FGlow.Parent := AssignedComp; FGlow.BringToFront;
  Result := False;
end;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:40 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