| Autor |
Beitrag |
dragi
      
Beiträge: 88
|
Verfasst: Mi 25.06.03 15:51
Hallo,
wahrscheinlich ist es so simpel das ich deshalb nichts finde.
Ich möchte das meine Programm, wenn das Edit1 Feld Leer ist ein Label anzeigt, ansonsten das Zeichen in edit umwandelt:
if
edit1.Text = '' (das soll Leer bedeuten)
then
Label4.Visible := true
else
Edit2.Text := IntToStr(ord(edit1.text[1]));
Wenn ich das Programm starte dann zeigt er immer das Label an, ob Zeichen da oder nicht und wandelt nichts mehr um. Was mache ich falsch?
Hoffe hab mich einigermassen verständlich ausgedrückt.
Für alle Antworten schon mal
Danke
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 25.06.03 16:49
Hallo!
Zum einen solltest Du Delpi-Tags in Deinen Postings verwenden. Zum anderen fehlt die Information, wo der von Dir gepostete Code aufgerufen wird!
Wenn Du diesen Code (1) im OnCreate-Ereignis der Form und (2) im OnChange-Ereignis von Edit1 aufrufst, dann sollte es klappen.
MfG,
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
dragi 
      
Beiträge: 88
|
Verfasst: Mi 25.06.03 17:05
ähmm, bin noch dabei delphi zu verstehen, poste hier einfach mal den gesamten Code den ich bis jetzt habe:
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: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68:
| interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Button2: TButton; Label4: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Edit1Change(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin if Edit2.Text = '' Then Label4.Visible := true Else Edit2.Text := IntToStr(ord(edit1.text[1])); end;
procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Text := Chr(StrToInt(Edit2.Text)); end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if MessageDlg('Wirklich beenden?', mtConfirmation, [mbYes,mbNo], 0)=mrNo then CanClose:=False
end;
procedure TForm1.Edit1Change(Sender: TObject); begin
end;
end. |
|
|
waldmeister
      
Beiträge: 136
Win XP
D7 Enterp
|
Verfasst: Mi 25.06.03 17:14
kann es sein, dass du die eigentschaft des labels im objektinspektor vorher nicht auf visible= false gesetzt hast??
_________________ der wald....der meister....der meister des waldes....der waldmeister
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Mi 25.06.03 17:17
hallo dragi!
ich weiss zwar nicht, wozu das gut soll, aber bítte!
entweder stellt du im OI des Labels4 'visible = false' ein
oder du erledigst das im TForm1.OnCreate Event.
ich stell solche änderungen lieber in OnCreate-Event ein, da springen sie mir schneller ins auge.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| {$UNTESTED} procedure TForm1.Button1Click(Sender: TObject); begin Label4.Visible:= (Edit2.Text = ''); if not Label4.Visible then Edit2.Text:= Edit1.Text[1] else Edit2.Text.Clear end; |
ich hoffe, dass ich dein problem richtig verstanden hab.
mfg, stefan
|
|
dragi 
      
Beiträge: 88
|
Verfasst: Mi 25.06.03 17:17
doch das habe ich. Es ist ja auch erst nicht da das Label, nur wenn ich den Button drücke. Das soll passieren wenn das Edit Feld leer ist, passiert aber auch wenn ein Zeichen im Edit-Feld ist, dann soll er aber umwandeln in ASCII. Und dann soll das Label auch wieder verschwinden... aber das alles passiert irgendwie nicht:(
|
|
dragi 
      
Beiträge: 88
|
Verfasst: Mi 25.06.03 18:00
So funktioniert es jetzt:
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: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68:
| unit ascii;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Button2: TButton; Label4: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin if Edit1.Text = '' then Label4.Visible := true else Edit2.Text:= IntToStr(ord(edit1.text[1])); end;
procedure TForm1.Button2Click(Sender: TObject); begin if Edit2.Text = '' then Label4.Visible:=true else Edit1.Text := Chr(StrToInt(Edit2.Text)); end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if MessageDlg('Wirklich beenden?', mtConfirmation, [mbYes,mbNo], 0)=mrNo then CanClose:=False
end;
end. |
Wie bekomme ich das Programm jetzt aber dazu, das wenn else eintrifft, vorher aber das Label aufgetaucht ist, es wieder verschwindet?
...und Danke für die Hilfe bis jetzt!
|
|
kat1
      
Beiträge: 40
Win XP
D6 EntPr
|
Verfasst: Mi 25.06.03 19:26
Na indem Du einfach
Delphi-Quelltext
in der else Bedingung aufrufst, oder nicht?
_________________ Mfg Uwe
Es ist eine Unsitte der Menschen, sich an alles zu gewöhnen.
|
|
dragi 
      
Beiträge: 88
|
Verfasst: Mi 25.06.03 19:33
Habe ich auch schon probiert, doch wenn ich das dann dazu schreibe kommt immer "Operator oder Semikolon fehlt"! Habe es so gemacht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.Button1Click(Sender: TObject); begin if Edit1.Text = '' then Label4.Visible := true else Edit2.Text:= IntToStr(ord(edit1.text[1])) Label4.Hide; end;
procedure TForm1.Button2Click(Sender: TObject); begin if Edit2.Text = '' then Label4.Visible:=true else Edit1.Text := Chr(StrToInt(Edit2.Text)) Label4.Hide; end; |
|
|
kat1
      
Beiträge: 40
Win XP
D6 EntPr
|
Verfasst: Mi 25.06.03 19:40
okay, also du vergisst, dass wenn du in der else-bedingung mehrere anweisungen hast, dass du das durch ein begin und end eingrenzen musst, weiterhin fehlt wirklich dann nach der ersten anweisung das semikolon, denn das darf man nur direkt vor end weglassen und direkt vor else ist es gar nicht erlaubt. Wenn Du meine Meinung hören willst, dann schreib in Zukunft auch besser vor end ein Semikolon, das erleichtert die Sache ungemein.
_________________ Mfg Uwe
Es ist eine Unsitte der Menschen, sich an alles zu gewöhnen.
|
|
dragi 
      
Beiträge: 88
|
Verfasst: Mi 25.06.03 20:40
Danke, das war mein fehler! Manchmal sieht man den Wald vpr lauter Bäumen nicht!
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Mi 25.06.03 21:22
Versuche mal deinen code überscihtlicher zu gestalten, in deinem Fall besonders das Einrücken von 2 Zeichen. Ich glaube dann hättest du das Problem auch gesehen...
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|