| Autor |
Beitrag |
Blutiger-Anfänger
      
Beiträge: 35
Win XP
D3 Prof
|
Verfasst: Di 30.11.04 15:54
Ich bins mal wieder.
Ich habe mir überlegt, dass ich mein Programm etwas überarbeiten könnte, und eine CheckListBox einfügen kann.
Jetzt meine Frage: Wie kann ich per Knopfdruck die Items in einer CheckListBox Verändern?
Wäre sehr nett von euch, wenn ihr schnellstmöglich antworten könntet.
Danke schonmal im voraus.
|
|
CoLdDsToNe
Hält's aus hier
Beiträge: 13
WIN XP (Suse 9.2)
D7 Pers
|
Verfasst: Di 30.11.04 16:28
hi,
also das geht genau so wie bei net normalen listbox
Der Unterschied von beiden ist ja bloss dass man bei ner checklistbox die einträge aktivieren und deaktivieren kann
also:
checkListBox.Items[IndexWert]:=Wert;
greetz cold
|
|
Blutiger-Anfänger 
      
Beiträge: 35
Win XP
D3 Prof
|
Verfasst: Di 30.11.04 16:34
HI
Danke schonmal. Ich bin ziemlich neu und unerfahren  .
Was soll index Wert sein, der Eintrag in der Box??? Wer nett, wenn du mir ne genauere beschreibung geben könntest(wär dir ewig dankbar), denn ich hab auch mit ner Normalen listBox noch nie gearbeitet. ich mache delphi erst seit nem Monat oder so.
Danke nochmal (und hoffentlich schonmal)  .
|
|
CoLdDsToNe
Hält's aus hier
Beiträge: 13
WIN XP (Suse 9.2)
D7 Pers
|
Verfasst: Di 30.11.04 16:39
Also dann mal bissle Theorie
Indexwert: In einer Listbox hat jeder eintrag einen Indexwert, so wie ne hausnummer halt.
Dieser Wert fängt bei 0 an und wird jedesmal um 1 erhöht wenn du nen wert beifügst.
Also: der erstte Wert hat Index 0, der zweite 1...
Also Hat der N te Wert den Index N-1.
der checklistBox[Index].
Der Wert den man speichert ist vom Format string.
Will man nun Zahlen speichern muss man umwandeln
integer to strin : inttostr
extended to string: flaottostr
wenns noch ne frage gibt..ich steh zur verfügung
greetz cold
|
|
Blutiger-Anfänger 
      
Beiträge: 35
Win XP
D3 Prof
|
Verfasst: Di 30.11.04 17:16
ist dann der Wert nac[index wert] das was dort geschrieben steht?
|
|
Blutiger-Anfänger 
      
Beiträge: 35
Win XP
D3 Prof
|
Verfasst: Di 30.11.04 17:21
Danke nochmal, hab es ausprobiert und weis es jetzt. 
|
|
Blutiger-Anfänger 
      
Beiträge: 35
Win XP
D3 Prof
|
Verfasst: Di 30.11.04 17:30
Doch noch eine Frage:
wie muss ich die IF schleife formulieren wenn ich delphi sagen will:
WENN ComboBox1 wert1 ausgewählt ist DANN
CheckListBox1 [0] := 'Test'

|
|
CoLdDsToNe
Hält's aus hier
Beiträge: 13
WIN XP (Suse 9.2)
D7 Pers
|
Verfasst: Di 30.11.04 17:42
re,
1. if ist keine schleige sondern ne kondition.
2. der test lautet dann:
Delphi-Quelltext 1: 2:
| if comboBox.ItemIndex=0 then CheckListBox[0]:='Test'; |
Mit ItemIndex findet man heraus welcher Index gselected ist
greetz cold
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
|
|
Blutiger-Anfänger 
      
Beiträge: 35
Win XP
D3 Prof
|
Verfasst: Di 30.11.04 18:02
das funzt bei mir immer noch nicht, ich bekomme die Fehlermeldung :
Klasse besitzt keine Standarteigenschaften.und Delphi vermutet den Fehler in
dem Kästchen mit der null CheckListBox1[0]:= 'Test';
|
|
CoLdDsToNe
Hält's aus hier
Beiträge: 13
WIN XP (Suse 9.2)
D7 Pers
|
Verfasst: Di 30.11.04 18:15
zwischenfrage: halt deine checklistbox schon nen wert???
wen ja poste mal code. wenn nicht:
Delphi-Quelltext 1:
| checklistbox.Items.Insert('Test',0) |
muesst so gehn
greetz cold
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
|
|
Blutiger-Anfänger 
      
Beiträge: 35
Win XP
D3 Prof
|
Verfasst: Di 30.11.04 19:27
Ja, sie hat einen Wert.
der Quode ist:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var Zeile:integer = 0; Button1.click (sende:TObjekt); begin stringGrid1.cells[0, Zeile] := ComboBox1.Text; inc(zeile); if ComboBox1.ItemIndex=0 then CheckListBox1[0]:='test erfolgreich | '
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
|
|
CoLdDsToNe
Hält's aus hier
Beiträge: 13
WIN XP (Suse 9.2)
D7 Pers
|
Verfasst: Di 30.11.04 19:41
| Blutiger-Anfänger hat folgendes geschrieben: | Delphi-Quelltext 1:
| var Zeile:integer = 0; | |
das geht auf keinen fall.
wenn dann
Delphi-Quelltext 1: 2: 3: 4:
| Button1.click (sende:TObjekt); var Zeile:integer; begin Zeile:=0; |
stringGrid1.cells[0, Zeile] := ComboBox1.Text;
warum stringgrid in diesem falle???
inc(zeile); <<<---- ueberfluessig
Delphi-Quelltext 1: 2:
| if ComboBox1.ItemIndex=0 then CheckListBox1[0]:='test erfolgreich' |
das muesst aber gehn
greetz cold
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
|
|
Blutiger-Anfänger 
      
Beiträge: 35
Win XP
D3 Prof
|
Verfasst: Di 30.11.04 20:03
Das inc Zeile brauche ich, weil ich zusätzlich ein StringGrid als anzeigetabelle brauche(das Programm ist zum erstellen von Tabletop armeelisten(wenn das dir was sagt)), und in Der CheckListBox will ich die verschiedenen Zusatzausrüstungen unterbringen, die dann nach der auswahl in dem dafür fogesehenen StringGrid Tabellarisch angeordnet werden sollen( mit Punkten und allem).
Die inc Zeile bewirkt, dass die Figur die ausgewählt ist unter der vorherangegangenen´Figur steht und sie nicht löscht.
Danke nochma
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 30.11.04 20:48
Moin!
Wenn ich dich richtig verstanden habe, hast du ein (zunächst leeres) StringGrid und einen globalen Positionszeiger auf die aktuelle Zeile in diese Tabelle. Dann hast du noch eine ComboBox (wobei ..List oder nicht natürlich noch die Frage ist) und einen Button. Wenn man den Button anklickt, willst du eine neue Zeile im StringGrid anlegen, in der der Text der ComboBox eingetragen werden soll. Soweit OK?
Sofern das richtig ist, würde ich folgenden Code vorschlagen:
Delphi-Quelltext 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:
| type TForm1 = class(TForm) ComboBox1: TComboBox; Button1: TButton; StringGrid1: TStringGrid; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1; Zeile: Integer = 0; implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin Inc(Zeile); StringGrid1.Cells[1,zeile] := ComboBox1.Text; end; |
Dabei ist natürlich noch zu berücksichtigen, dass das StringGrid "genug" Zeilen haben muss bzw. Code einzufügen, der neue Zeilen bei bedarf anlegt.
Weiter: Der obige Code funktioniert sowohl mit ComboBox.Style := csDropDown als auch mit csDropDownList, weil die Eigenschaft .Text gelesen wird und nicht aus dem StringArray per Index.
Hilft das was?
Du gibst das Stichwort "Tabletop Armeelisten". Das hört sich für mich erstmal danach an, als solltest du zunächst eine "geschickte" Datenstruktur entwerfen oder einfach gleiche eine Datenbank nehmen. Ich fürchte, andernfalls wirst du früher oder später Probleme bekommen, wenn die Programmstruktur sich auf Grund von geänderten Wünschen an das Programmverhalten anpassen soll. Sieht nach klassischer Falle aus... (erstmal an der Oberfläche basteln und irgendwie die Daten speichern, ist ja nicht so wichtig  ) ... in die du läufst.
cu
Narses
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Di 30.11.04 20:59
@Blutiger-Anfänger & CoLdDsToNe: Bitte benutzt beim Posten von Delphi-Sourcecode die [ delphi] ... [ /delphi] Tags damit dieser Code "gehighlightet" dargestellt wird. Danke!
|
|
Blutiger-Anfänger 
      
Beiträge: 35
Win XP
D3 Prof
|
Verfasst: Do 02.12.04 18:21
HI Leute
ich hab mir heute aus der Bibliothek ein Buch geholt, in dem hoffentlich mein Problem gelöst wird, danke schonmal für eure Antworten.
Ich denke ich werde nicht drum herum kommen eine Datenbank anzulegen(hab so was noch nie gemacht).
|
|