| Autor |
Beitrag |
CodexX
      
Beiträge: 118
WinXP
Delphi XE
|
Verfasst: Fr 18.07.08 23:37
Hallo,
ich frage den Benutzer per InputQuery nach einem Wert. Wie lasse ich aber nun den Dialog geöffnet, falls auf OK geklickt wurde, während das Eingabefeld noch immer leer ist?
Delphi-Quelltext 1: 2: 3: 4: 5:
| if InputQuery('Caption', 'Prompt', Value) then begin if Value = '' then ... end; |
|
|
Timosch
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: Sa 19.07.08 11:32
Entweder du öffnest ihn einfach wieder, falls value leer ist, oder du bastelst dir dafür eine eigene Form. Andere Möglichkeiten fallen mir da keine ein.
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
CodexX 
      
Beiträge: 118
WinXP
Delphi XE
|
Verfasst: Sa 19.07.08 14:07
Hm, unschön, aber gut, wenn das nicht anders geht. Das müsste ich ja dann am besten in eine Schleife packen, oder?
Habe jetzt versucht als Abbruchbedingung einen nicht-leeren Value-Wert zu haben. Das Problem ist aber dann, dass es auch bei Abbrechen wieder aufgeht, weil der Wert dann ja auch leer ist. Wie sonst?
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 19.07.08 14:20
wie timosch bereits sagte, bau dir am besten 'ne eigene inputbox. alles andere, kannste vergessen.
PS: ausserdem biste ja in 5 min. damit fertig...
|
|
CodexX 
      
Beiträge: 118
WinXP
Delphi XE
|
Verfasst: Sa 19.07.08 14:34
Joa, dann arbeite ich mich jetzt mal ne Stunde in die Erstellung von ImputBoxen ein, um das dann in 5min zu machen.
Dann mal hoffen, dass das auch mit Unicode klappt. Ich verwende für sowas die TNT-Komponenten und hätte in dem Fall WideInputQuery genommen. Nun gut, selber basteln ... ohje ... 
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 19.07.08 14:38
wenn du sowieso nur zahlen eingeben lassen möchtest. brauchst du doch kein unicode ... sondern 'ne spzialisierte kompo welche gleich prüft ob die zahl gültig ist ... und das musste eh machen..
|
|
CodexX 
      
Beiträge: 118
WinXP
Delphi XE
|
Verfasst: Sa 19.07.08 14:44
Wer redet von nur Zahlen? Nein, es sollen beliebige Eingaben möglich sein.
Außerdem gehts mir bei Unicode darum, die Anweisungen mit erweiterten Zeichensätzen machen zu können. Aber darum gehts bei meinem Problem ja nun wirklich nicht...
|
|
Hobby-Programmierer
      
Beiträge: 238
Erhaltene Danke: 4
Win XP Pro, Vista Ultimate Trial :o)
D6 Pro, D7 Pro, Turbo, XE SE
|
Verfasst: Sa 19.07.08 22:14
Tach ...,
Timosch hat folgendes geschrieben: | | Entweder du öffnest ihn einfach wieder, falls value leer ist, ... |
vielleicht so: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.Button1Click(Sender: TObject);
Function IsInputQuery(const ACaption, APrompt: string; var Value: string): Boolean; begin result:= InputQuery(ACaption, APrompt, Value); if not result then begin ShowMessage('Benutzerabbruch, es werden keine weiteren Eingaben verwertet !'); result:= true; end else if (Trim(Value) = '') then result:= false; end;
var Wert: String; begin while not IsInputQuery('Caption', 'Prompt', Wert) do ShowMessage('fehlerhafte Eingabe'); end; |
LG Mario
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 19.07.08 22:24
CodexX hat folgendes geschrieben: | Wer redet von nur Zahlen? Nein, es sollen beliebige Eingaben möglich sein.
Außerdem gehts mir bei Unicode darum, die Anweisungen mit erweiterten Zeichensätzen machen zu können. Aber darum gehts bei meinem Problem ja nun wirklich nicht... |
komm jetzt hör mal auf zu jammern. ist noch nur 'ne form, 'n label und 'n edit drauf, zwei knöpfe ok und cancel und zwei events ... der code sieht dann wie folgt aus:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) bOk: TButton; bCancel: TButton; Edit1: TEdit; Label1: TLabel; procedure bOkClick(Sender: TObject); procedure bCancelClick(Sender: TObject); private public value: string; end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.bCancelClick(Sender: TObject); begin ModalResult := mrCancel; end;
procedure TForm1.bOkClick(Sender: TObject); begin if trim(edit1.Text) <> '' then begin value := trim(edit1.text); modalResult := mrOk; end; end;
end. |
jetzt sag nur nicht, das ganze wäre kompliziert?
|
|
CodexX 
      
Beiträge: 118
WinXP
Delphi XE
|
Verfasst: So 20.07.08 00:49
Grenzgaenger hat folgendes geschrieben: | komm jetzt hör mal auf zu jammern. ist noch nur 'ne form, 'n label und 'n edit drauf, zwei knöpfe ok und cancel und zwei events ... der code sieht dann wie folgt aus: ...
jetzt sag nur nicht, das ganze wäre kompliziert? |
Mit Selber-Machen war doch nicht gemeint, dafür extra ein Formular anzulegen!?
Ich dachte, es wäre von sowas wie hier die Rede:
Delphi-Quelltext 1: 2: 3:
| MsgDialog := WideCreateMessageDialog(...); with AMsgDialog do ... |
Nur wie das da genau geht, wusste ich nicht, deshalb meine letzte Aussage.
Aber das von Hobby-Programmierer tut genau, was es soll. Danke!
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 20.07.08 12:28
CodexX hat folgendes geschrieben: | | Mit Selber-Machen war doch nicht gemeint, dafür extra ein Formular anzulegen!? |
wenn du DEINE anforderung ordentlich umsetzen möchtest, wirst du daran nicht vorbeikommen. ausserdem macht iptbox auch nichts anderes und was um himmels willen ist an einen formular so abstossend?
|
|