![]() |
Combobox Problem
hi
Es geht um folgendes: Ich hab ne ComboBox die 3 zeilen enthällt (1a;2a;3a) Ich will die Caption eines Labels verändern wenn ich eine Zeile auswähle z.b.wenn ich ich "2a" auswähle soll das Label (200) anzeigen Das Ganze wird durch ein Button ausgelöst Wie ist da der code? |
Re: Combobox Problem
Delphi-Quellcode:
Label.Caption := ComboBox.items[ ComboBox.ItemIndex);
|
Re: Combobox Problem
im onchange ereignis der combobox
|
Re: Combobox Problem
Ok
Ich erweitere es ein bisschen Wenn die Combobox "1a" anzeigt,soll das Label 100 anzeigen Bei "2a" soll das llabel 200 anzeigen Und bei "3a" soll es 300 anzeigen Alles wird ausgelöst vom Button9 Wie lautet da der code? Ich programmier noch nicht lange desshalb kann ich mit
Delphi-Quellcode:
nicht viel anfagen
Label.Caption := ComboBox.items[ ComboBox.ItemIndex);
|
Re: Combobox Problem
Geh doch mal strukturiert vor:
Was willst du eigentlich? Du willst in ein Label das erste Zeichen des aktivierten Comboboxeintrags und dahinter noch '00' schreiben. Das ganze im ButtonClick. Wie du den Text des gewählten Comboboxeintrags erhältst, hat dir mkinzler schon gesagt. Jetzt musst du dir nur noch das erste Zeichen dieses Strings holen, das geht einfach, indem du der Zeichenkette [1] nachstellst. Nochmal zum Mitschreiben:
Delphi-Quellcode:
MeinLabel.Caption:=MeineCombobox.items[MeineCombobox.itemindex][1]+'00';
|
Re: Combobox Problem
Hi,
schau dir unbedingt die Delphi-Grundlagen an. Für den Anfang ist es sicher am einfachsten zu verstehen, wenn du den angezeigten Text der ComboBox auswertest:
Delphi-Quellcode:
Du kannst natürlich auch mit dem ItemIndex arbeiten, diesen um eins erhöhen und 2 Nullen anhängen. Doch das ist für dich sicher etwas schwieriger nachzuvollziehen:
if ComboBox1.Text = '1a' then
Label1.Caption := '100' else if ...
Delphi-Quellcode:
Label1.Caption := IntToStr(ComboBox1.ItemIndex + 1) + '00';
|
Re: Combobox Problem
danke
Delphi-Quellcode:
is genau das was ich such.
if ComboBox1.Text = '1a' then
Label1.Caption := '100' else if ... was ist eigentlich der Index. :gruebel: |
Re: Combobox Problem
Die Einträge (Items) der ComboBox sind alle mit einer Nummer (Index) versehen, über die man diese Einträge ansprechen kann. Der erste Eintrag hat den ItemIndex 0, der zweite 1 etc.
|
Re: Combobox Problem
danke
du hast mir gerade sehr viel tipperei erspaart |
Re: Combobox Problem
Und .ItemIndex ist der Index des ausgewählten Eintrags.
|
Re: Combobox Problem
was ist ein unsicherer Code?
|
Re: Combobox Problem
Zitat:
|
Re: Combobox Problem
Hm ?
Meinst du vielleicht, dass es bei 1b nicht klappen würde ? Wenn... ...ja: Da darf ich ja mal wieder Pos&Copy erklären :mrgreen: : Mach es so, falls du außer a noch etwas anderes einbauen möchtes (z.B. b):
Delphi-Quellcode:
...nein:
var i : Integer;
s : String; begin s := cb.Items[cb.ItemIndex]; // der ausgwählte Eintrag von der ComboBox (cb) for i := 1 to Length(s) do // Strings beginnen bei 1; hier wird der gesamte String Zeichen für Zeichen durchgegangen und... if not (s[i] in [0..9]) then // ...geschaut, ob außer 0..9 noch etwas anders enthalten ist LabelBla.Caption := Copy(s, 0, i); // Copy kopiert in dem Fall im String s von 0 bis zur Stelle, an der etwas anderes außer 0-9 gefunden wurde Lies dir ja trotzdem durch und probier es einfach nur zur Übung aus und erklär nochmal genau dein Problem. |
Re: Combobox Problem
also
Delphi-Quellcode:
Label57.Caption := 200*2^(Stufe-1);
if ComboBox1.ItemIndex = 0 then
Label57.Caption := 200*2^(Stufe-1); Label58.Caption := 1000*2^(Stufe-1); [Fehler] ogame1.pas(456): E2396 Unsicherer Code ist nur in unsicheren Prozeduren zulässig |
Re: Combobox Problem
Ohje. Also, zuerst einmal versuchst du hier einer Zeichenkette (die Caption) einen Zahlenwert (Das ergebnis der Berechnung) zuzuordnen. Das ganze musst du nich mithilfe von IntToStr, oder bei Kommawerten mit FloatToStr umwandeln. Die Delphihilfe(F1) hilft da. Dann kannst du in Delphi nich "^" als "hoch" verwenden. Das ^ in Delphi hat etwas mit Pointern zu tun. Dazu musst du die Funktion Power benutzen.
Um beispielsweise einem Label das Ergebnis der berechnug 2^5+10 anzeigen zu lassen, müsste das so aussehen: Label1.Caption:=IntToStr(Power(2, 5)+10); Außerdem hast du begin und end vergessen. Eventuell solltest du dir mal die Grundlagetutorials durchlesen ( ![]() |
Re: Combobox Problem
1. begin ...end fehlt
2. .Caption ist ein String 3. Der Code macht was anderes, als du willst. ^ bedeutet nicht hoch sondern ist eine Zeigeroperation (Referenzierung/Dereferenzierung
Delphi-Quellcode:
if ComboBox1.ItemIndex = 0 then
begin Label57.Caption := IntToStr( Power(200*2, Stufe-1)); ... end; |
Re: Combobox Problem
das ist die ganze geschicht
Delphi-Quellcode:
das mit dem power check ich nit
procedure TForm3.Button9Click(Sender: TObject);
var stufe,Fl,Rf,Nf : Integer; begin stufe := StrToInt (Edit31.Text); Rf := StrToInt (Edit32.Text); Nf:= StrToInt (Edit33.Text); Fl := StrToInt (Edit34.Text); if ComboBox1.ItemIndex = 0 then Label57.Caption := 200*2^(Stufe-1); Label58.Caption := 1000*2^(Stufe-1); Label59.caption := 200*2^(Stufe-1); Label64.Caption := ((200+1000)div(1000*(1+FL)))*60; end; wenn ich es einbauen will unterstreicht er es immer rot |
Re: Combobox Problem
Wie bereits erwähnt wurde ist "^" nicht der Potenz-Operator, sondern eine Zeigeroperation.
Die Funktion ![]()
Delphi-Quellcode:
Dann kannst du diese auch nutzen und Delphi kennt sie. Aber wenn du nach
uses Math;
![]() |
Re: Combobox Problem
Btw. Die If-Anweisung wrkst immer noch nur für das erste Label. Die anderen werden immer gesetzt. Umschließe alle Anweisungen mit einem begin..end-Block (siehe #16)
|
Re: Combobox Problem
Delphi-Quellcode:
procedure TForm3.Button9Click(Sender: TObject);
var stufe,Fl,Rf,Nf,Stufe2 : Integer; begin stufe := StrToInt (Edit31.Text); stufe2 := Stufe-1; Rf := StrToInt (Edit32.Text); Nf:= StrToInt (Edit33.Text); Fl := StrToInt (Edit34.Text); if ComboBox1.ItemIndex = 0 then begin Label57.Caption := 200*power(2,Stufe2); Label58.Caption := 1000*power(2,Stufe2); Label59.caption := 200*power(2,Stufe2); Label64.Caption := ((200+1000)div(1000*(1+FL)))*60; end; end; Label57.Caption := 200*power(2,Stufe2); [Fehler] ogame1.pas(458): E2010 Inkompatible Typen: 'string' und 'Double' |
Re: Combobox Problem
Schau dir Beitrag 16 nochmal genau an
|
Re: Combobox Problem
Hi,
sei bitte so gut und arbeite das oben verlinks Tutorial durch. Ohne die Grundlagen kann man nicht Programmieren. Dann weißt du auch, dass und wie man Zahlen in einen String konvertieren muss, um diese auszugeben. Wie das geht, steht im Tutorial, ich nenne dir diese Funktion nicht, finde es selbst heraus. Glaub mir, ich mache das zu deinem Besten. Edit: oder hatte ich's noch nicht verlinkt? ![]() ![]() |
Re: Combobox Problem
ok bin dabei es durchzulesen
ich hab jetzt n bischen am code geändert so sieht es jetzt aus
Delphi-Quellcode:
nun zeigt er das hier an :gruebel:
if ComboBox1.ItemIndex = 0 then
begin m1:=200*power(2,Stufe2); Label57.Caption := InttoStr (m1); [Fehler] ogame1.pas(458): E2010 Inkompatible Typen: 'Integer' und 'Double' ??????? |
Re: Combobox Problem
Dannmußt du halt FloatToStr() nehmen
|
Re: Combobox Problem
ups
in
Delphi-Quellcode:
ist der Fehler
m1:=200*power(2,Stufe2);
|
Re: Combobox Problem
welceh typen haben m1 und Stufe2?
|
Re: Combobox Problem
Integer
|
Re: Combobox Problem
Delphi-Quellcode:
m1:=Trunc(200*power(2,Stufe2));
|
Re: Combobox Problem
danke
es funktioniert :-D aber was mach Trunc :?: |
Re: Combobox Problem
Setze den Cursor bzw. Caret auf "Trunc" (also einmal anklicken beispielsweise) und drücke F1.
|
Re: Combobox Problem
Thema nicht vorhanden
Das angeforderte Thema ist nicht vorhanden. Mögliche Ursachen und Lösungen: Ursache Lösung Das Schlüsselwort oder der String, der von der IDE an die Hilfe gesendet wurde, ist in keinem Thema dieses Hilfesystems angegeben. Versuchen Sie es über den Hilfeindex oder die Suchfunktionen. Das Zielthema ist nicht Bestandteil des Bereichs, den Sie im Feld Filter festgelegt haben. Versuchen Sie einen anderen Filter oder wählen Sie (kein Filter). Die URL des Zielthemas ist inkorrekt oder hat sich geändert. Versuchen Sie es über den Hilfeindex oder die Suchfunktionen. |
Re: Combobox Problem
Trunc wandelt eine Fliesskommazahl in eine Ganzzahl indem sie Nachkommastellen abschneidet.
also aud 0.99999999999999999 wird 0 |
Re: Combobox Problem
jetzt hab ich n anderes problem
Delphi-Quellcode:
procedure TForm3.Button9Click(Sender: TObject);
var stufe,Fl,Rf,Nf,Stufe2,M : Integer; begin stufe := StrToInt (Edit31.Text); stufe2 := Stufe-1; Rf := StrToInt (Edit32.Text); Nf:= StrToInt (Edit33.Text); Fl := StrToInt (Edit34.Text); if ComboBox1.ItemIndex =0 then begin Label57.Caption := IntToStr (Trunc(200*power(2,Stufe2))); Label58.Caption := IntToStr (Trunc(1000*power(2,Stufe2))); Label59.caption := IntToStr(Trunc(200*power(2,Stufe2))); Label64.Caption := IntToStr (((200+1000)div(1000*(1+FL)))*60); end; end; Label64.Caption :=IntToStr (((200+1000)div(1000*(1+FL)))*60); Das Label zeigt immer dann 60 an wenn FL den wert 0 hat. Es zeigt aber immer dann 0 an wenn FL nicht null ist. Die Zeile ist eine Miutenangabe |
Re: Combobox Problem
Und was ist gewünscht?
|
Re: Combobox Problem
Label64.Caption :=IntToStr (((200+1000)div(1000*(1+FL)))*60);
das ergebniss soll ne minutenanzeige sein delphi rechent das aber nicht so aus wie es da steht |
Re: Combobox Problem
1200 DIV (6000*(1+FL)) soll ne Minutenangabe ergeben?
Was steht in Fl? |
Re: Combobox Problem
vergiss das bitte mit der minutenangabe
bei Label64.Caption :=IntToStr (((200+1000)div(1000*(1+FL)))*60); ist das problem folgendes: wenn FL=0 dann zeigt das label immer 60 an wenn FL nicht 0 ist zeigt das label immer 0 an |
Re: Combobox Problem
Also dann was soll dort angezeigt werden?
|
Re: Combobox Problem
|
Re: Combobox Problem
OT: ogame, eh?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz