Mehr Kontrolle über die messagedlg


MessageDlg-Funktion ist sehr nützlich, da es alle Zeilenumbruch der Nachricht und Griffe Positionierung der Schaltflächen behandelt. Aber zwei unterschiedliche Bedürfnisse für eine nicht standardmäßige Verhalten von der MessageDlg hat mich den Sourcecode des Referats Dialoge zu erkunden.
Dieser Artikel erschien ursprünglich auf www.undu.com
Zuerst brauchte ich eine modale Dialogbox, die schließen, wenn eine Taste gedrückt wurde und Bericht erstatten, welche Taste gedrückt wurde. Ähnlich wie die TurboPascal-Befehle IF KEYPRESSED dann Key: = READKEY.
Zweitens musste ich kontrollieren, welche Schaltflächen im Dialogfeld Standard war. Haben Sie eine MessageDlg 'Sie wirklich wollen, die Datei zu löschen?' fragt dann mit der Schaltfläche Ja als Standard könnte (das ist der Standard in MessageDlg) Probleme für den Benutzer viel zu begierig erstellen.
Die Dialoge-Einheit hat eine Funktion namens CreateMessageDialog, die von MessageDlg verwendet wird, um das Dialogfeld zu machen. Mithilfe von CreateMessageDialog direkt erhalten Sie das Beste aus MessageDlg (Zeilenumbruch und andere automatische Designelements) plus erhalten Sie mehr Kontrolle über das Verhalten des Dialogs.
Unten ist meine Lösung auf zwei Bedürfnisse gezeigt.
Erstellen Sie eine neue Anwendung. Setzen Sie zwei Buttons und ein Label auf dem Formular. Weisen Sie das OnClick-Ereignis für button1 zu TForm1.Button1Click und TForm2.Button2Click weisen Sie das OnClick-Ereignis von button2 zu.
Klicken auf Button1 wird nun einen Dialog produzieren, der schließt, wenn der Benutzer eine der Tasten'legalen' drückt oder wenn der Benutzer ESC drückt oder auf das Schließen-Symbol. Die Taste, die gedrückt wurde, wird in Label1 angezeigt.
Ein Klick Button2 zeigt eine standard-Nachricht-Dialogfeld mit einem Unterschied: die Schaltfläche Nein ist in der Standardeinstellung nicht den ja-Button. Um die Schaltfläche Nein zu finden, verwende ich IF TButton(Controls[n]). Name = 'Nein'. Ersetzen Sie 'Nein' mit 'Fragenmit', 'Abbrechen' oder einem der anderen Schaltfläche-Beschriftungen, einen Schaltfläche Standard zu machen.
Einheit Unit1;
Schnittstelle
verwendet
Windows, Nachrichten, SysUtils, Klassen, Graphics, Steuerelemente, Formulare, Dialoge, StdCtrls;
Typ
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Button2: TButton;
Prozedur Button1Click(Sender: TObject);
Procedure HelpBoxKeyPress (Sender: TObject; Var Key: Char);
Prozedur Button2Click(Sender: TObject);
Private
{Private Deklarationen}
öffentliche

{Public Deklarationen}
Ende;
var
Form1: TForm1;
Umsetzung
{$R *. DFM}
VAR
LegalKeys: String;
Prozedur TForm1.Button1Click(Sender: TObject);
VAR
S:String;
beginnen
LegalKeys: = 'ABC123';
s: = 'Was wollen Sie jetzt tun?' + #13 #13 +
'A. nach Hause gehen' + #13 +
'B. Mittag essen' = #13 +
'C. Sleep' + #13 +
1.-Programm in Delphi' + #13 +
'(2) eine Pizza bestellen ' + #13 +
' 3. nichts ';
MIT dem CreateMessageDialog(s, mtConfirmation, []) zu tun
BEGIN
versuchen Sie
OnKeyPress: = HelpBoxKeyPress;
IF ShowModal = MrOK
Danach Label1.Caption:='You gedrückt: '+ LegalKeys [Tag]
ELSE Label1.Caption:='You gedrückt: ' + 'Abbrechen';
Schließlich
Frei;
Ende; versuchen Sie... Schließlich
ENDE; mit
Ende;
Procedure TForm1.HelpBoxKeyPress (Sender: TObject; Var Key: Char);
BEGIN
IF Pos(UpCase(Key),LegalKeys) > 0 dann
BEGIN
TForm(Sender). Tag:=POS(UpCase(Key),LegalKeys);
TForm(Sender). ModalResult: = MrOK;
ENDE
SONST wenn Schlüssel = #27 dann TForm(Sender). ModalResult: = MrCancel;
ENDE;
Prozedur TForm1.Button2Click(Sender: TObject);
VAR
N:Integer;
beginnen
MIT CreateMessageDialog (' wollen Sie wirklich die file?',mtWarning,[mbYes,mbNo]) löschen
BEGIN
FÜR n: = 0 TO ControlCount-1
IF (Steuerelemente [n] TButton)
DANN IF TButton(Controls[n]). Name = 'Nein' dann TButton (Controls[n]). TabOrder: = 0;
ShowModal;
ENDE;
Ende;
Ende.









Mehr Kontrolle über die messagedlg


Mehr Kontrolle über die messagedlg : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


MessageDlg-Funktion ist sehr nützlich, da es alle Zeilenumbruch der Nachricht und Griffe Positionierung der Schaltflächen behandelt. Aber zwei unterschiedliche Bedürfnisse für eine nicht standardmäßige Verhalten von der MessageDlg hat mich den Sourcecode des Referats Dialoge zu erkunden.
Dieser Artikel erschien ursprünglich auf www.undu.com
Zuerst brauchte ich eine modale Dialogbox, die schließen, wenn eine Taste gedrückt wurde und Bericht erstatten, welche Taste gedrückt wurde. Ähnlich wie die TurboPascal-Befehle IF KEYPRESSED dann Key: = READKEY.
Zweitens musste ich kontrollieren, welche Schaltflächen im Dialogfeld Standard war. Haben Sie eine MessageDlg 'Sie wirklich wollen, die Datei zu löschen?' fragt dann mit der Schaltfläche Ja als Standard könnte (das ist der Standard in MessageDlg) Probleme für den Benutzer viel zu begierig erstellen.
Die Dialoge-Einheit hat eine Funktion namens CreateMessageDialog, die von MessageDlg verwendet wird, um das Dialogfeld zu machen. Mithilfe von CreateMessageDialog direkt erhalten Sie das Beste aus MessageDlg (Zeilenumbruch und andere automatische Designelements) plus erhalten Sie mehr Kontrolle über das Verhalten des Dialogs.
Unten ist meine Lösung auf zwei Bedürfnisse gezeigt.
Erstellen Sie eine neue Anwendung. Setzen Sie zwei Buttons und ein Label auf dem Formular. Weisen Sie das OnClick-Ereignis für button1 zu TForm1.Button1Click und TForm2.Button2Click weisen Sie das OnClick-Ereignis von button2 zu.
Klicken auf Button1 wird nun einen Dialog produzieren, der schließt, wenn der Benutzer eine der Tasten'legalen' drückt oder wenn der Benutzer ESC drückt oder auf das Schließen-Symbol. Die Taste, die gedrückt wurde, wird in Label1 angezeigt.
Ein Klick Button2 zeigt eine standard-Nachricht-Dialogfeld mit einem Unterschied: die Schaltfläche Nein ist in der Standardeinstellung nicht den ja-Button. Um die Schaltfläche Nein zu finden, verwende ich IF TButton(Controls[n]). Name = 'Nein'. Ersetzen Sie 'Nein' mit 'Fragenmit', 'Abbrechen' oder einem der anderen Schaltfläche-Beschriftungen, einen Schaltfläche Standard zu machen.
Einheit Unit1;
Schnittstelle
verwendet
Windows, Nachrichten, SysUtils, Klassen, Graphics, Steuerelemente, Formulare, Dialoge, StdCtrls;
Typ
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Button2: TButton;
Prozedur Button1Click(Sender: TObject);
Procedure HelpBoxKeyPress (Sender: TObject; Var Key: Char);
Prozedur Button2Click(Sender: TObject);
Private
{Private Deklarationen}
öffentliche

{Public Deklarationen}
Ende;
var
Form1: TForm1;
Umsetzung
{$R *. DFM}
VAR
LegalKeys: String;
Prozedur TForm1.Button1Click(Sender: TObject);
VAR
S:String;
beginnen
LegalKeys: = 'ABC123';
s: = 'Was wollen Sie jetzt tun?' + #13 #13 +
'A. nach Hause gehen' + #13 +
'B. Mittag essen' = #13 +
'C. Sleep' + #13 +
1.-Programm in Delphi' + #13 +
'(2) eine Pizza bestellen ' + #13 +
' 3. nichts ';
MIT dem CreateMessageDialog(s, mtConfirmation, []) zu tun
BEGIN
versuchen Sie
OnKeyPress: = HelpBoxKeyPress;
IF ShowModal = MrOK
Danach Label1.Caption:='You gedrückt: '+ LegalKeys [Tag]
ELSE Label1.Caption:='You gedrückt: ' + 'Abbrechen';
Schließlich
Frei;
Ende; versuchen Sie... Schließlich
ENDE; mit
Ende;
Procedure TForm1.HelpBoxKeyPress (Sender: TObject; Var Key: Char);
BEGIN
IF Pos(UpCase(Key),LegalKeys) > 0 dann
BEGIN
TForm(Sender). Tag:=POS(UpCase(Key),LegalKeys);
TForm(Sender). ModalResult: = MrOK;
ENDE
SONST wenn Schlüssel = #27 dann TForm(Sender). ModalResult: = MrCancel;
ENDE;
Prozedur TForm1.Button2Click(Sender: TObject);
VAR
N:Integer;
beginnen
MIT CreateMessageDialog (' wollen Sie wirklich die file?',mtWarning,[mbYes,mbNo]) löschen
BEGIN
FÜR n: = 0 TO ControlCount-1
IF (Steuerelemente [n] TButton)
DANN IF TButton(Controls[n]). Name = 'Nein' dann TButton (Controls[n]). TabOrder: = 0;
ShowModal;
ENDE;
Ende;
Ende.


Mehr Kontrolle über die messagedlg

Mehr Kontrolle über die messagedlg : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Mehr Kontrolle über die messagedlg
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung