AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Dialog Unit für Delphi

Dialog Unit für Delphi

Ein Thema von idefix2 · begonnen am 5. Jul 2015
Antwort Antwort
idefix2
Registriert seit: 17. Mär 2010
Meine Dialog-Unit ist fürs erste fertig.
Wesentlich einfacher in der Handhabung als die bekannten Prozeduren und Wrapper, aber gleichzeitig extrem flexibel.

Der Dialog besteht aus drei Teilen:
Standardmässig
1. ein Label mit einer beliebig langen, auch mehrzeiligen Nachricht bzw. Frage angezeigt wird

2. eine Buttonleiste mit bis zu 5 Buttons.

3. Will man in den Dialog zusätzliche Felder packen, ist das denkbar einfach: Man erstellt in der IDE im aufrufenden Formular visuelle Controls (TEdit, TCombobox, oder auch ein TPanel mit mehreren Komponenten darauf) und setzt für diese Komponente visible:=false. Vor dem Aufruf des Dialog selbst wird dann mit Hilfe der Procedure AskAddControl dieses Control von Hauptformular an den Fragedialog "verborgt".

Darüber hinaus können, ebenfalls vor dem Aufruf des Dialogs, noch eine Reihe von Dialogparametern gesetzt werden. So lässt sich jeder derartige Dialog visuell in der IDE gestalten, ohne dass man für den Dialog ein eigenes Formular machen muss:

procedure AskSetposition (left,top: integer); definiert die Position des Dialogs. Standardmässig wird der Fragedialog relativ zum gerade vorher aktiven Dialog zentriert.

procedure AskSetIcon(icon: PWidechar); Erlaubt ein individuelles Icon. Die Standardicons werden automatisch abhängig von der Aufrufart gesetzt.

procedure AskSettimeout (ms: integer; result: integer=1); Wenn ein Timeout (in Millisekunden) gesetzt wird, wird der Dialog automatisch nach Ablauf der Zeit geschlossen. Modalresult wird dann mit dem Wert belegt, der in result übergeben wird.
Achtung: Im Parameter Result darf der Wert 0 nicht übergeben werden, sonst wird der Diaog nach Ablauf der Zeit nicht geschlossen.

Delphi-Quellcode:
type
  TCanClose = function(ButtonNr: integer): boolean;
  TCanCloseM = function(ButtonNr: integer): boolean of object;
procedure AskSetCanClose (Canclose: TCanClose); overload;
procedure AskSetCanClose (Canclose: TCanCloseM); overload;
Die beiden überladenen Prozeduren ermöglichen es, wahlweise eine einfache Funktion oder eine Methode (des aufrufenden Formulars) festzulegen, die in Abhängigkeit der eingegebenen Daten und des gedrückten Buttons überprüft, ob der Dialog geschlossen werden darf.

procedure AskAddControl (co: TWinControl; const caption: String=''); Das angegebene Control wird direkt über der Buttonleiste eingefügt. Ist eine Caption angegeben, dann wird die links vom Control angezeigt. Control+Caption werden zentriert ausgegeben. Wenn der Platz dafür aber nicht ausreicht, wird die Form entsprechend vergrössert.

procedure AskReset; Die Einstellungen der Form werden automatisch zurückgesetzt, nachdem eine der Frageroutinen aufgerufen worden ist. Hat man schon irgendwelche Parameter gesetzt und ruft dann in der Folge doch keine der Frageroutinen auf, muss man die Einstellungen mittels AskReset wieder zurücksetzen, damit für den nächsten Aufruf an einer anderen Stelle des Programms wieder die Standardwerte eingestellt sind.

procedure AskSetStandardFontSize (size: integer); Der einzige Parameter, der via AskReset nicht zurückgesetzt wird, ist die Schriftgrösse, in der standardmässig der obere Label angezeigt wird. Damit kann also die Schriftgrösse für alle nachfolgenden Aufrufe einheitlich festgelegt werden. Bei jedem Aufruf kann individuell für diesen Aufruf die Schriftgrösse verändert werden, indem man dem auszugebenden Text z.B. :8: oder :15: voranstellt, dann wird der Text mit size=8 bzw. mit size=15 angezeigt.

Folgende Fragedialoge sind verfügbar:

Delphi-Quellcode:
procedure Msg (const Msg, a1: string);
procedure ErrMsg (const Msg: string);
procedure WarnMsg (const Msg: string);
procedure InfoMsg (const Msg: string; Timeout: integer=0);

function Ask (const question: string): boolean; overload;
function Ask (const question, a1,a2: string): boolean; overload;
function WarnContinue (const Warning, Abort, Continue: string): boolean;

procedure Ask (const question, a1: string); overload;
function Ask (const question, a1,a2,a3: string): integer; overload;
function Ask (const question, a1,a2,a3,a4: string): integer; overload;
function Ask (const question, a1,a2,a3,a4,a5: string): integer; overload;
Die Aufrufe mit zwei Buttontext-Parametern liefern als Ergebnis boolean, bei mehr als zwei Möglichkeiten ist der Ergebnistyp integer.
WarnContinue macht das Gleiche wie die Prozedur Ask mit zwei Buttontexten, zeigt aber das Warnsymbol statt des Fragesymbols an.
Der Aufruf
if Warncontinue('Vorsicht!', 'Abbrechen', 'Weitermachen') then ... ist gleichbedeutend mit
Delphi-Quellcode:
AskSetIcon(IDI_WARNING);
if Ask('Vorsicht!', 'Abbrechen', 'Weitermachen') then ...
Ebenso sind die Aufrufe
Ask('Frage') und
Ask('Frage','Nein','Ja') gleichbedeutend.
Angehängte Dateien
Dateityp: zip fdDialog.zip (4,1 KB, 23x aufgerufen)

Geändert von idefix2 ( 5. Jul 2015 um 21:49 Uhr)
 
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 13:48 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