Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
John
Beiträge: 273 Registriert: Mo 30. Jul 2007, 19:55
Beitrag
von John » Sa 1. Sep 2007, 11:55
Mal ne Frage:
Ich möchte soz. Zahlen unter 10, die also nur einstellig mit einer Null zuvor ausgeben, in ein Edit-Feld.
dachte so könnte man es machen
if zahl10 then editx.text:=inttostr(Zahl);
else if Zahl<10 then editx.text:=('0')+inttostr(Zahl);
Halte ich für sehr umständlich da es mehrere solcher Zahlen und Editfelder gibt.
John
monta
Lazarusforum e. V.
Beiträge: 2809 Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:
Beitrag
von monta » Sa 1. Sep 2007, 12:09
da könnte dir Format helfen. Aber da musst du auch jede Zahl durchjagen.
http://lazarus-ccr.sourceforge.net/docs ... ormat.html " onclick="window.open(this.href);return false;
Johannes
John
Beiträge: 273 Registriert: Mo 30. Jul 2007, 19:55
Beitrag
von John » Sa 1. Sep 2007, 13:04
Wenn ich da jede Zahl durchjagen muss, dann wird das nur komplizierter für mich weil ich noch nicht wirklich mit format gearbeitet habe. Andere Idee, andere Frage: Gäbe es denn ne möglichkeit einfach den 2.Algo von mir zu nehmen und dann eine schleife schreiben in der jedes "editfeld" nacheinander angesprochen wird?
John
theo
Beiträge: 10927 Registriert: Mo 11. Sep 2006, 19:01
Beitrag
von theo » Sa 1. Sep 2007, 13:28
Kannste machen.
Oder im OnChange Event anpassen.
John
Beiträge: 273 Registriert: Mo 30. Jul 2007, 19:55
Beitrag
von John » So 2. Sep 2007, 14:20
Und wie am schlausten?
theo
Beiträge: 10927 Registriert: Mo 11. Sep 2006, 19:01
Beitrag
von theo » So 2. Sep 2007, 14:31
John hat geschrieben: Und wie am schlausten?
Kann ich dir nicht sagen ohne zu verstehen wozu das eigentlich gut sein soll.
Christian
Beiträge: 6079 Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:
Beitrag
von Christian » So 2. Sep 2007, 15:13
Wiso nimmst du nicht einfach Format('%.2d',meinevariable);
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
John
Beiträge: 273 Registriert: Mo 30. Jul 2007, 19:55
Beitrag
von John » So 2. Sep 2007, 17:11
theo hat geschrieben: John hat geschrieben: Und wie am schlausten?
Kann ich dir nicht sagen ohne zu verstehen wozu das eigentlich gut sein soll.
Also ich will am besten mit einem Algo alle Edit felder, ohne jedes einzeln ansprechen zu müssen, ansprechen.
Christian hat geschrieben:
Wiso nimmst du nicht einfach Format('%.2d',meinevariable);
Mit dem Codeschnippsel kann ich leider nichts anfangen. Entweder du erklärst ihn oder ich kann imho nix damit anfangen.
John
Christian
Beiträge: 6079 Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:
Beitrag
von Christian » So 2. Sep 2007, 17:39
Mit dem Codeschnippsel kann ich leider nichts anfangen. Entweder du erklärst ihn oder ich kann imho nix damit anfangen.
Der Formatiert dir meinevariable immer 2 stellig wie du es wolltest.
Hättest ja einfach ausprobieren können.
Was macht es bitte für einen Sinn Editfelder anzusprechen zu wollen ohne sie direkt anzusprechen ? Du kannst Editfelder nur direkt ansprechen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
theo
Beiträge: 10927 Registriert: Mo 11. Sep 2006, 19:01
Beitrag
von theo » So 2. Sep 2007, 17:48
John hat geschrieben:
Also ich will am besten mit einem Algo alle Edit felder, ohne jedes einzeln ansprechen zu müssen, ansprechen.
Damit wiederholst du dich nur. Ich verstehe immer noch nicht was dein eigentliches Ziel ist:
Lies mal hier:
http://www.lugbz.org/documents/smart-qu ... .html#goal " onclick="window.open(this.href);return false;
John
Beiträge: 273 Registriert: Mo 30. Jul 2007, 19:55
Beitrag
von John » So 2. Sep 2007, 17:51
Naja der Sinn liegt darin, wenn du einen Array von Variablen zum beispiel hast. Da sind sagen wir 5 Variablen Drin und du möchtest alle 5 zum Ausdruch bringen aber nicht jedesmal eingeben
editx1.text:=Variable1;
Aber na gut, die frage mit dem format, wäre mit deiner antwort jetzt auch erledigt.
Ich dachte nur an eine etwas abstruse alternative zur lösungsidee. Die ich auch nicht wirklich erklären kann
John
theo
Beiträge: 10927 Registriert: Mo 11. Sep 2006, 19:01
Beitrag
von theo » So 2. Sep 2007, 18:24
Da gibt's verschiedene Möglichkeiten:
- Du kannst, wie gesagt, einen gemeinsamen Eventhandler einsetzen und dann jeweils am "Sender" die "Änderungen vornehmen"
- Du kannst durch Form1.Components[]; loopen und alle TEdit ansprechen.
- Du kannst dir eine Klasse von TEdit ableiten, welche das bereits im SetText macht etc...
Christian
Beiträge: 6079 Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:
Beitrag
von Christian » So 2. Sep 2007, 18:25
Code: Alles auswählen
var
myarray : array[0..4] of string;
for i := 1 to 5 do
FindComponent('Edit'+IntToStr(i)).Text := MyArray[i-1];
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
John
Beiträge: 273 Registriert: Mo 30. Jul 2007, 19:55
Beitrag
von John » So 2. Sep 2007, 18:58
Vielen Dank!
Frage komplett beantwortet.
John
schnullerbacke
Beiträge: 1187 Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg
Beitrag
von schnullerbacke » Mo 3. Sep 2007, 16:55
Andere Möglichkeit wäre noch bei:
OnEnter
OnExit
für rechtsbündig mit:
TEdit(Sender).Text:= Format('%' + IntToStr(TEdit(Sender).MaxLength) + 'd', StrToInt(Trim(TEdit(Sender).Text));
linksbündig:
TEdit(Sender).Text:= Format('%d', StrToInt(Trim(TEdit(Sender).Text));
zu arbeiten.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.
(Ringelnatz)