Autor Beitrag
CodexX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118

WinXP
Delphi XE
BeitragVerfasst: 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?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if InputQuery('Caption', 'Prompt', Value) then
begin
  if Value = '' then
  ...
end;
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118

WinXP
Delphi XE
BeitragVerfasst: 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



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118

WinXP
Delphi XE
BeitragVerfasst: 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



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118

WinXP
Delphi XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 238
Erhaltene Danke: 4

Win XP Pro, Vista Ultimate Trial :o)
D6 Pro, D7 Pro, Turbo, XE SE
BeitragVerfasst: Sa 19.07.08 22:14 
Tach ...,
user profile iconTimosch hat folgendes geschrieben:
Entweder du öffnest ihn einfach wieder, falls value leer ist, ...

vielleicht so:
ausblenden 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



BeitragVerfasst: Sa 19.07.08 22:24 
user profile iconCodexX 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:
ausblenden volle Höhe Delphi-Quelltext
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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118

WinXP
Delphi XE
BeitragVerfasst: So 20.07.08 00:49 
user profile iconGrenzgaenger 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:
ausblenden 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



BeitragVerfasst: So 20.07.08 12:28 
user profile iconCodexX 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?