| Autor |
Beitrag |
hassedelphi
      
Beiträge: 101
WIN XP
D7 Enterprise
|
Verfasst: Di 15.07.03 16:39
hi ehhmm... hab da ein kleines problem also
stellt euch for ihr habt 8 editcomponenten auf dem tform1 und unter jeweils 2 eine Checkbox; etwa so
edit1___________edit2___________edit3___________edit4
edit5___________edit6___________edit7___________edit8
cb1_____________cb2____________cb3____________cb4
mein Quelltext:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| VAR a1,a2,a3,a4,b1,b2,b3,b4,c,i : integer;
begin
if checkbox1.checked=true then i:=1; ... 2 ... 2; ... 3 ... 3; ... 5 ... 6;
c:=a[i]*b[i]; showmessage(inttostr(c));
end; |
habe also versucht die variablen a1,a2,a3,a4 durch a[i] zu ersetzen.
das funzt aber nicht. weiß jemand, wie das geht?
Moderiert von Klabautermann: Delphi-Tag korrigiert.
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Di 15.07.03 16:53
Hallo,
dein Stichwort heißt ARRAY.
Gruß
Klabautermann
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Di 15.07.03 17:05
ich kann dir leider nicht folgen, was du mit dem ganzen bezweckst.
gleis mich mal auf, was du vorhast, dann ist es einfacher eine lösung dafür die finden
mfg, stefan
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Di 15.07.03 17:27
Du solltest vielleicht auch die Code-Funktion im Forum nutzen, damit man deinen Code besser versteht. Aber ein fleißiger Mod wird sich sicher bald der Bearbeitung deines Posts annehmen.
@Gray: Er will seine Variablen anders aufrufen, also statt:
A1, A2, A3 mit einer Schleife á la A[I], A[I], A[I]..  Denke ich jedenfalls..
_________________ Hasta La Victoria Siempre
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Di 15.07.03 17:38
hi terra!
die code-, bzw delphi-tags hat er eh benutzt, nur ist ihm das end-tag ans ende des beitrages gerutscht
| Zitat: |
wie das geht?[/delphi]
|
so lange nix schlimmeres passiert
am gescheitesten ist es, wenn er erzählt, was er vorhat. vielleicht kann man das problem auf eine viel einfacher art & weise lösen...
mfg, stefan
|
|
hassedelphi 
      
Beiträge: 101
WIN XP
D7 Enterprise
|
Verfasst: Di 15.07.03 18:34
was ich will?
also
ich geb in jede der 8 editfenster eine Zahl ein
jeweils 2 editfenster gehören zusammen
die rechnung soll nun angepasst werden, je nach dem, welche checkbox ich ausgewählt habe
quelltext normal:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| VAR a1,a2,a3,a4,b1,b2,b3,b4,c,i : integer;
begin
a1:=strtoint(edit1.text);...
if checkbox1.checked=true then c:=a1*b1; if checkbox2.checked=true then c:=a2*b2; if checkbox3.checked=true then c:=a3+b3; if checkbox4.checked=true then c:=a4*b4;
showmessage...
end; |
um dass zu überbrücken, versuche ich...
Delphi-Quelltext
Hier hab ich's mit nem Array probiert, aber...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| VAR a : array[1..4]of integer; b : array[1..4]of integer; c,i,s : integer;
if checkbox1.checked=true then i:=1;if cb2.ch=true then i:=2;...
s:=i
case s of 1 : c:=a1*b1; 2 : c:=a2*b2; 3 : c:=... |
dass is noch genause lang, und desshalb
würde ich's gern wie beim zweiten haben
(DAS GANZE ist nur 'ne schablone, nicht das echte programm)
|
|
hassedelphi 
      
Beiträge: 101
WIN XP
D7 Enterprise
|
Verfasst: Di 15.07.03 18:48
denn stellt euch vor, ihr habt 5 mal 100 werte einzulesen. aber je nach wunsch des users sollen nur 2 blocks (2 mal 100) eingelesen werden.
wenn wir annehmen, dass die variablen so heißen:
block1_1 (variable 1 von block1)
block1_2 (variable 2 von block1)
block1_3 (variable 3 von block1)
...
block2_1 (variable 1 von block2)
block2_2 (variable 2 von block2)
block2_3 (variable 3 von block2)
...
dann könnte ich ohne probleme sagen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| if (block1.selected=true) and (block5.selected=true) then i := 1; i2 := 5
block[i]_1:=>einlesen< block[i]_2:=>einlesen< block[i]_3:=>einlesen< block[i]_4:=>einlesen< block[i]_5:=>einlesen< ...
block[i2]_1:=>einlesen< block[i2]_2:=>einlesen< block[i2]_3:=>einlesen< block[i2]_4:=>einlesen< |
ok, is'n scheiß beispiel, aber versucht's euch vorzustellen 
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 15.07.03 21:03
Ich weiß nicht, ob eine Checkbox die richtige Wahl ist. Immerhin könnte der User die zweite und dritte Checkbox markieren, wodurch sich dein Wert "i" ändern würde. Vielleicht wären RadioButtons die bessere Wahl, weil hierbei nur jeweils eine markiert sein kann.
Aber egal, wenn´s Checkboxen sein sollen, dann kannst du so ermitteln, welche von denen das Häkchen hat. Sogar ohne Arrays. Voraussetzung ist, dass die CBs aber auch weiter Checkbox1, Checkbox2, usw. heißen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| j := 1; for i := 1 to 4 do if((FindComponent('Checkbox' + inttostr(i)) as TCheckBox).Checked) then begin j := i; break; end; |
Durch das BREAK wird die Schleife bei der ersten gefundenen und ge-checkten Box verlassen. Lässt du es weg, dann berechnest du u.U. den "falschen" Block, weil ja -wie gesagt!- mehrere Checkboxen das Häkchen haben können.
Auf ähnliche Weise kannst du die Werte in den Edits zusammenrechnen. Wenn ich davon ausgehe, dass wohl Edit1 und Edit5 zur Checkbox1 gehören, dann lässt sich der ermittelte Wert "j" für das erste Edit und +4 für das zweite Edit benutzen:
Delphi-Quelltext 1: 2: 3: 4:
| i := StrToIntDef((FindComponent('Edit' + inttostr(j)) as TEdit).Text,0) * StrToIntDef((FindComponent('Edit' + inttostr(j+4)) as TEdit).Text,0);
ShowMessage(inttostr(i)); |
So, ist das jetzt kurz genug?
btw: Ich habe "StrToIntDef" benutzt, weil du hierbei für evtl. Fehler einen Vorgabewert angeben kannst. Bei "StrToInt" müsstest du normalerweise einen try- except-Block bauen, weil die Funktion eine Exception auslöst, wenn du einen String umwandeln willst, der gar keine Ziffern enthält:
Delphi-Quelltext 1:
| i := StrToInt('Test'); |
Und so eine Fehlerbox sieht nicht gut aus. 
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Di 15.07.03 21:22
mich schaudert es bei dem gedanken, dass du 5 spalten zu je 100 editfelder auf dem desktop hast, die der user dann befüllen soll.
warum nimmst denn kein stringgrid? das wär doch in deinem fall leichter handlebar
wenn ich dein problem richtig verstanden hab, dann ist der wert in der ersten spalte immer der multiplikator. den multiplikanden muss das programm immer erst in der richtigen spalte suchen, in welche er eingetragen wurde (möglich ist es von der 2. bis zur 5. spalte. richtig?)
nur welchen unterschied macht es, ob ein wert in der 2. oder 4. spalten eingetragen ist? das ergebnis ist ja immer das produkt aus 2 zahlen.
oder hab ich da schon wieder was überlesen?
mfg, stefan
|
|
hassedelphi 
      
Beiträge: 101
WIN XP
D7 Enterprise
|
Verfasst: Mi 16.07.03 10:22
okok, war'n scheiß beispiel dann zeig ich euch jetzt mein echtes programm.
Also wie schon richtit vermutet hab ich 'n stringgrid. 8 normale spalten, + 1 ixierte und etwa 7 normale zeilen dort werden bestimmte eigenschaften von Stoffen reingeschrieben. Also hab ich für 8 spalten jeweils 7 einträge (8 mal 7). Der user kann nun unter jeder spalte eine checkbox anklicken, auf dass diese werte in dieser spalte in eine rechnung mit eingehen. erstmal mach ich dass für nur 2 stoffe (es können maximal 2 checkboxen gleichzeitig aktiviert sein).
wenn man nun eine checkbox anklickt, werden die werte der dazugehörigen spalte eingelesen. Um jetzt die rechnung nicht für jeden einzelen fall anpassen zu müssen (
wenn 1. und 2. checkbox angeklickt ist, dann...
wenn 2. und 3. checkbox angeklickt ist, dann...
wenn 4. und 5. checkbox angeklickt ist, dann...
wenn 6. und 7. checkbox angeklickt ist, dann...
wenn 5. und 2. checkbox angeklickt ist, dann...
wenn 8. und 1. checkbox angeklickt ist, dann...
....)
würde ich gern die variablen schnell ändern können. wenn die rechnung heißt (ist nicht die echte, also bitte keine bemerkungen, wie es leichter gehen könnte):
________________________________________________________
c =
block1_1+block1_2+block1_3+block1_4+block1_5+block1_6+block1_7
mal
block2_1+block2_2+block2_3+block2_4+block2_5+block2_6+block2_7
________________________________________________________
block1_5 heißt die 5. variable von block1
wenn ich die rechnung so schreiben könnte:
________________________________________________________
c =
block[i]_1+block[i]_2+block[i]_3+block[i]_4+block[i]_5+block[i]_6+block[i]_7
mal
block[l]_1+block[l]_2+block[l]_3+block[l]_4+block[l]_5+block[l]_6+block[l]_7
________________________________________________________
wäre dass universal, und i & l würden sich beim wählen der checkbox ergeben (wenn checkbox1.checked dann i := 1 -> erster block) usw.[/b]
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 16.07.03 11:04
| grayfox hat folgendes geschrieben: | | mich schaudert es bei dem gedanken, dass du 5 spalten zu je 100 editfelder auf dem desktop hast, die der user dann befüllen soll. |
Ich find´s eher merkwürdig, dass Fragen gestellt werden, die mit der realen Situation gar nichts zu tun haben. Dass er ´n Stringgrid nutzt, hat er ja nun zugegeben. Warum nicht von Anfang an, entzieht sich meiner Kenntnis.
|
|
hassedelphi 
      
Beiträge: 101
WIN XP
D7 Enterprise
|
Verfasst: Mi 16.07.03 13:19
ok ich versuch's nochmal ganz simpel und ohne componenten zu erklären.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| VAR a1,a2,a3,a4,b1,b2,b3,b4,i,c : intger
begin
for i := 1 to 4 begin a[i]:=(findcomponent('edita'+inttostr(i)) as tedit).text; b[i]:=(findcomponent('editb'+inttostr(i)) as tedit).text; end;
if checkbox1.checked then i:=1; if checkbox2.checked then i:=2; if checkbox3.checked then i:=3; if checkbox4.checked then i:=4;
c:=a[i]*b[i]; showmessage(inttostr(c));
end; |
so hab ich's mir vorgestellt. funzt aber nicht. hat's jemand verstanden?
(bezieht sich auf die erste nachricht mit den editfenstern ( 8 ) und den checkboxen ( 4 ). habe edita und editb nur umbenannt, damit nummern 1-4 erhalten bleiben.)
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Mi 16.07.03 15:37
hallo hassedelphi!
wenn ich dich nun richtig verstanden hab, dann willst du die werte in den spalten addieren und die spaltensummen derjenigen spalten multiplizieren, deren checkbox angekreuzt ist
ich berufe mich damit auf diese formel:
| Zitat: |
c =
block1_1+block1_2+block1_3+block1_4+block1_5+block1_6+block1_7
mal
block2_1+block2_2+block2_3+block2_4+block2_5+block2_6+block2_7
|
(es wär deutlicher, wenn du zeile und spalte anstelle von block und 1..7 geschreiben hättest)
mittlerweile hab ich auch mal einen versuch gestartet:
es ist sicherlich nicht das gelbe vom ei, aber so würde ich das problem lösen, sollte ich es mal lösen müssen
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: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119:
| unit Mainprog;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, DBCtrls, Grids, ExtCtrls;
type TForm1 = class(TForm) Panel1: TPanel; StringGrid1: TStringGrid; EndeBtn: TButton; SpeedButton1: TSpeedButton; Label1: TLabel; CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; CheckBox4: TCheckBox; CheckBox5: TCheckBox; CheckBox6: TCheckBox; CheckBox7: TCheckBox; CheckBox8: TCheckBox; Label2: TLabel; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; Edit1: TEdit; procedure EndeBtnClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.EndeBtnClick(Sender: TObject); begin close; end;
procedure TForm1.FormCreate(Sender: TObject); var aRow, aCol: ShortInt; begin with StringGrid1 do begin Options:= Options + [goEditing, goTabs, goAlwaysShowEditor]; Cells[0,0]:= 'Spalte A'; Cells[1,0]:= 'Spalte B'; Cells[2,0]:= 'Spalte C'; Cells[3,0]:= 'Spalte D'; Cells[4,0]:= 'Spalte E'; Cells[5,0]:= 'Spalte F'; Cells[6,0]:= 'Spalte G'; Cells[7,0]:= 'Spalte H'; RowCount:= 7; ColCount:= 8; for aRow:= 1 to RowCount -1 do for aCol:= 0 to ColCount-1 do Cells[aCol,aRow]:= IntToStr(aCol+aRow); end; end;
procedure TForm1.SpeedButton1Click(Sender: TObject); var anz,i: ShortInt; Kodierung: string[8]; Ergebnis: LongInt; Faktor: ShortInt; aRow: ShortInt; Spaltensumme: Array[1..8] of LongInt; begin Kodierung:= '00000000'; for anz:= 1 to 8 do if ((FindComponent('CheckBox' + IntToStr(anz)) as TCheckBox).Checked) then Kodierung[anz]:= '1'; Label1.Caption:= Kodierung;
Ergebnis:= 0; for anz:= 1 to 8 do begin Faktor:= StrToInt(Kodierung[anz]); With StringGrid1 do begin SpaltenSumme[anz]:= 0; for aRow:= 1 to RowCount-1 do SpaltenSumme[anz]:= SpaltenSumme[anz] + StrToInt(Cells[anz-1,aRow]);
SpaltenSumme[anz]:= SpaltenSumme[anz] * Faktor; end; end;
for anz:= 1 to 8 do (FindComponent('Edit' + IntToStr(anz)) as TEdit).Text:= IntToStr(Spaltensumme[anz]);
Ergebnis:= 0; for anz:= 1 to 7 do for i:= anz+1 to 8 do Ergebnis:= Ergebnis + (SpaltenSumme[anz] * SpaltenSumme[i]);
Label2.Caption:= Format(' %7d', [Ergebnis]);
end;
end. |
zur erklärung:
auf dem Form befindet sich ein Panel. darauf sitzt das StringGrid, unter jeder spalte 1 CheckBox und ein 1 Editfeld
(darin zeige ich zum testen die spaltensumme an). weiters gibts noch 2 Labels. darunter befinden sich die buttons 'rechnen' und 'beenden'
beschriftet, die options angepasst und gefüllt wird das StringGrid in der procedure TForm1.Create.
in der variablen 'Kodierung' werte ich den zustand der CheckBoxes aus
(0 = leer, 1 = angehakerlt)
setz das hakerl bei der ersten spalte und klick auf rechnen -
im label1 siehst du den zustand der 'Kodierung' und im label2 erscheint das ergebnis (es ist noch 0. logisch, oder?)
klickst du jetzt die CheckBox2 an und danach auf 'rechnen', werden 2 Editfelder gefüllt das ergebnis aus (edit1 * edit2) errechnet
bei 3 gesetzten hakerl ist die logik
(feld1 * feld2) + (feld1 * feld3) + (feld2 * feld3)
gerechnet wird in dieser schleifenkonstruktion, die kannst dir ja nach deinen vorstellungen anpassen.
Delphi-Quelltext 1: 2: 3: 4:
| Ergebnis:= 0; for anz:= 1 to 7 do for i:= anz+1 to 8 do Ergebnis:= Ergebnis + (SpaltenSumme[anz] * SpaltenSumme[i]); |
im array spaltensumme(spalte) befindet sich das produkt (summe der spalten) * Faktor, welcher sich aus 0 oder 1 ergibt, je nachdem das hakerl gesetzt ist oder nicht
die ganze logik ist bewusst einfach gehalten, damit du sie einfacher durchblicken und auch leichter abändern kannst.
hoffentlich hab ich nun endlich verstanden, was du vorhast.
wenn nicht, meldest dich bestimmt wieder
mfg, stefan
|
|
hassedelphi 
      
Beiträge: 101
WIN XP
D7 Enterprise
|
Verfasst: Mi 16.07.03 17:39
nein, du hasst es nicht verstanden. das programm ist zwar bestimmt richtig, aber wie schon 1000 mal gesagt ist es nicht das richtige, also nützt es mir nichts; schau:
ich habe je nach dem, welche checkboxen angeklickt werden, und welche werte in den zellen stehen eine ganz andere Rechnung. Um genau zu sein, versuche ich 8 Stoffe im geschlossenen system miteinander zu vermischen (desshalb 8 (bzw. 9 ) spalten) (thermodynamik). anfangen will ich erst mal mit zwei stoffen (nur zwei checkboxen sind checked). Jetzt habe ich folgende möglichkeiten:
fe = fester stoff; fl = flüssiger stoff; g = gas
1.__fe + fe => fe + fe
2.__fl + fl => fl + fl
3.__g + g => g + g
4.__fe + fe => fe + fl
5.__fl + fl => fl + fe
6.__fl + fl => fl + g
7.__g + g => g + fl
8.__fe + g => fl + fl
9.__fe + g => fe + fl
10._fe + g => fl + g
dass sind alle möglichen ergebnisse, wenn man 2  stoffe mit einander vermischt. du siehst also, dass es keine universelle gleichung gibt. in manchen fällen vielleicht ähnliche aber ansonsten nicht.
das einlesen der werte im stringgrid, wenn ich die einzelnen checkboxen anklicke ist leicht.
wenn ich jetzt in allen spalten den gleichen festen stoff in unterschiedlicher Masse habe, ist die Rechnung sehr simpel. es heißt dann ( wenn 1. und 2. stoff ausgewählt wurde ):
Tm := (T11*m1*c1 + T12*m2*c2) / (c2*m2 + c1*m1);
nun kann der user aber leider entscheiden, welche beiden der 8 stoffe er miteinander vermischt. das macht dann in etwa 7*8 = 56 Fälle. Für diese müsste ich immer genau  die gleiche Rechnung schreiben; nur die Variablen hätten je nach spaltenwahl eine andere Nummer. Da kommt dann meine super Idee ins spiel, (die aber leider nicht funzt) die da wäre:
Tm := ( T1[i] * m[i] * c[i] + T1 [k] * m[k] * c[k] ) / ( c[i] * m[i] + c[k] * m[k] )
wobei sich i & k aus den entsrechend gewählten checkboxen ergeben. wenn der bekloppte User also die 2. und 7. Spalte mischen will (den Stoff, nicht die Spalte), muss er folglich die 2. und 7. checkbox auswählen => daraus ergibt sich im Qelltext, dass i=2 und k=7 ist. und somit würde der scheiß funzen. tut er aber nicht.
wie kann ich also diese universale gleichung so schreiben, das der gaze schrott funzt?

|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 16.07.03 18:01
Hallo!
Da es alles ziemlich durcheinander ist, werde ich mich mal auf dieses Posting von Dir beziehen:
| hassedelphi hat folgendes geschrieben: | ok ich versuch's nochmal ganz simpel und ohne componenten zu erklären.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| VAR a1,a2,a3,a4,b1,b2,b3,b4,i,c : intger
begin
for i := 1 to 4 begin a[i]:=(findcomponent('edita'+inttostr(i)) as tedit).text; b[i]:=(findcomponent('editb'+inttostr(i)) as tedit).text; end;
if checkbox1.checked then i:=1; if checkbox2.checked then i:=2; if checkbox3.checked then i:=3; if checkbox4.checked then i:=4;
c:=a[i]*b[i]; showmessage(inttostr(c));
end; |
so hab ich's mir vorgestellt. funzt aber nicht. hat's jemand verstanden?
(bezieht sich auf die erste nachricht mit den editfenstern ( 8 ) und den checkboxen ( 4 ). habe edita und editb nur umbenannt, damit nummern 1-4 erhalten bleiben.) |
Das Problem ist, dass Du "a[i]" benutzen möchtest, "a" jedoch nicht als Array deklariert ist. Das machst Du so:
statt
Delphi-Quelltext 1:
| VAR a1,a2,a3,a4 : integer; |
deklarierst Du ein Array so:
Delphi-Quelltext 1:
| VAR a : Array[1..4] of Integer; |
Dann klappts auch mit dem Nachbarn ... ähm ... Array.
Du solltest Dir evtl. das Tutorial über Arrays hier im Forum ansehen.
MfG
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
hassedelphi 
      
Beiträge: 101
WIN XP
D7 Enterprise
|
Verfasst: Mi 16.07.03 20:06
oh danke. wen's nochmal interessiert, hier der funzende quelltext:
(wenn 3 mal componente edita1,2,3 / editb1,2,3 und 3 cbs und 'n button auf'm formfenster sind; mit radiobuttons gehts doch einfacher)
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);
var a,b : array[1..3] of integer; i,c,m : integer; begin
for i := 1 to 3 do begin a[i]:=strtoint((findcomponent('edita'+inttostr(i)) as tedit).text); b[i]:=strtoint((findcomponent('editb'+inttostr(i)) as tedit).text); end;
for i := 1 to 3 do begin if (findcomponent('checkbox'+inttostr(i))as tcheckbox).checked then m:=i; end;
c:=a[m]+b[m]; showmessage(inttostr(c));
end; |
|
|
|