Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Combobox Problem (https://www.delphipraxis.net/95766-combobox-problem.html)

Darksniper 12. Jul 2007 20:02


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?

mkinzler 12. Jul 2007 20:11

Re: Combobox Problem
 
Delphi-Quellcode:
Label.Caption := ComboBox.items[ ComboBox.ItemIndex);

dajuhsa 12. Jul 2007 20:13

Re: Combobox Problem
 
im onchange ereignis der combobox

Darksniper 12. Jul 2007 20:24

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:
Label.Caption := ComboBox.items[ ComboBox.ItemIndex);
nicht viel anfagen

Apollonius 12. Jul 2007 20:29

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';

Matze 12. Jul 2007 20:31

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:
if ComboBox1.Text = '1a' then
  Label1.Caption := '100'
else if ...
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:

Delphi-Quellcode:
Label1.Caption := IntToStr(ComboBox1.ItemIndex + 1) + '00';

Darksniper 12. Jul 2007 20:46

Re: Combobox Problem
 
danke

Delphi-Quellcode:
if ComboBox1.Text = '1a' then
  Label1.Caption := '100'
else if ...
is genau das was ich such.

was ist eigentlich der Index. :gruebel:

Matze 12. Jul 2007 20:48

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.

Darksniper 12. Jul 2007 20:50

Re: Combobox Problem
 
danke

du hast mir gerade sehr viel tipperei erspaart

mkinzler 12. Jul 2007 20:51

Re: Combobox Problem
 
Und .ItemIndex ist der Index des ausgewählten Eintrags.

Darksniper 12. Jul 2007 21:30

Re: Combobox Problem
 
was ist ein unsicherer Code?

mkinzler 12. Jul 2007 21:35

Re: Combobox Problem
 
Zitat:

Zitat von Darksniper
was ist ein unsicherer Code?

Wie meinst du das?

Nils_13 12. Jul 2007 21:41

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:
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
...nein:
Lies dir ja trotzdem durch und probier es einfach nur zur Übung aus und erklär nochmal genau dein Problem.

Darksniper 12. Jul 2007 21:50

Re: Combobox Problem
 
also

Delphi-Quellcode:
if ComboBox1.ItemIndex = 0 then
  Label57.Caption := 200*2^(Stufe-1);
  Label58.Caption := 1000*2^(Stufe-1);
Label57.Caption := 200*2^(Stufe-1);

[Fehler] ogame1.pas(456): E2396 Unsicherer Code ist nur in unsicheren Prozeduren zulässig

inherited 12. Jul 2007 21:58

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 (www.dsdt.info), die helfen bei sowas wirklich!

mkinzler 12. Jul 2007 21:58

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;

Darksniper 12. Jul 2007 22:20

Re: Combobox Problem
 
das ist die ganze geschicht

Delphi-Quellcode:
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;
das mit dem power check ich nit

wenn ich es einbauen will unterstreicht er es immer rot

Matze 13. Jul 2007 06:30

Re: Combobox Problem
 
Wie bereits erwähnt wurde ist "^" nicht der Potenz-Operator, sondern eine Zeigeroperation.

Die Funktion Delphi-Referenz durchsuchenPower befindet sich in der Unit Math, die du daher in die uses-Klausel mit aufnehmen musst:

Delphi-Quellcode:
uses Math;
Dann kannst du diese auch nutzen und Delphi kennt sie. Aber wenn du nach Hier im Forum suchenPower gesucht oder in der Delphi-Hilfe nachgeschaut hättest, wäre dir das auch selbst aufgefallen. :?

mkinzler 13. Jul 2007 06:34

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)

Darksniper 13. Jul 2007 09:52

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'

mkinzler 13. Jul 2007 10:04

Re: Combobox Problem
 
Schau dir Beitrag 16 nochmal genau an

Matze 13. Jul 2007 10:05

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? Tutorial & Crashkurs. In deinem Fall das hier, doch arbeite das alles durch.

Darksniper 13. Jul 2007 10:40

Re: Combobox Problem
 
ok bin dabei es durchzulesen

ich hab jetzt n bischen am code geändert
so sieht es jetzt aus

Delphi-Quellcode:
if ComboBox1.ItemIndex = 0 then
  begin
   m1:=200*power(2,Stufe2);
   Label57.Caption := InttoStr (m1);
nun zeigt er das hier an :gruebel:

[Fehler] ogame1.pas(458): E2010 Inkompatible Typen: 'Integer' und 'Double'

???????

mkinzler 13. Jul 2007 10:44

Re: Combobox Problem
 
Dannmußt du halt FloatToStr() nehmen

Darksniper 13. Jul 2007 10:48

Re: Combobox Problem
 
ups

in
Delphi-Quellcode:
m1:=200*power(2,Stufe2);
ist der Fehler

mkinzler 13. Jul 2007 10:50

Re: Combobox Problem
 
welceh typen haben m1 und Stufe2?

Darksniper 13. Jul 2007 10:52

Re: Combobox Problem
 
Integer

mkinzler 13. Jul 2007 10:57

Re: Combobox Problem
 
Delphi-Quellcode:
m1:=Trunc(200*power(2,Stufe2));

Darksniper 13. Jul 2007 11:03

Re: Combobox Problem
 
danke
es funktioniert :-D

aber was mach Trunc :?:

Matze 13. Jul 2007 11:03

Re: Combobox Problem
 
Setze den Cursor bzw. Caret auf "Trunc" (also einmal anklicken beispielsweise) und drücke F1.

Darksniper 13. Jul 2007 11:10

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.

mkinzler 13. Jul 2007 11:14

Re: Combobox Problem
 
Trunc wandelt eine Fliesskommazahl in eine Ganzzahl indem sie Nachkommastellen abschneidet.
also
aud 0.99999999999999999 wird 0

Darksniper 13. Jul 2007 13:48

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

mkinzler 13. Jul 2007 13:49

Re: Combobox Problem
 
Und was ist gewünscht?

Darksniper 13. Jul 2007 13:53

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

mkinzler 13. Jul 2007 13:55

Re: Combobox Problem
 
1200 DIV (6000*(1+FL)) soll ne Minutenangabe ergeben?
Was steht in Fl?

Darksniper 13. Jul 2007 14:01

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

mkinzler 13. Jul 2007 14:03

Re: Combobox Problem
 
Also dann was soll dort angezeigt werden?

Darksniper 13. Jul 2007 14:14

Re: Combobox Problem
 
hier
http://img29.picoodle.com/img/img29/...mm_61824db.png

dajuhsa 13. Jul 2007 15:31

Re: Combobox Problem
 
OT: ogame, eh?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz