![]() |
Viele Trackbars aber 1 Procedur
Hi,
so hab mich mal in der genialen CL umgeschaut aber nix gefunden. Vielleicht ist es auch ein logisches Problem was ich selbst hinbekommen müsste. Also..ich habe ein Programm geschrieben was viele Werte aus einer Datei liest, welche einem Spiel als Konfigurations Datie dienst. Das ganze Ding sieht so aus: Bild - Trackbar - Label Bild - Trackbar - Label Bild - Trackbar - Label Bild - Trackbar - Label Das Bild ist dazu dar, damit der USer weuiss um was es sich handelt. Die Trackbar um den Wert zu erhöhen oder zu verringern. Und das Label natürlich zum anzeigen. Nun habe ich ca. 30 Trackbars. Wenn der User diese Verschiebt soll sich das Label natürlich dementsprechend ändern. Aber muss ich jetzt 30 CHange Proceduren machen oder geht das auch mit nem bisschen weniger Code ?? Ich bin ein Newbie also seid nicht zu hart :-D |
Re: Viele Trackbars aber 1 Procedur
Du kannst allen Trackbars das gleiche Ereignis zuweisen.
Dort wird als Parameter ein sender übergeben. Das ist genau diejenige Trackbar, die das Ereignis auslöst. Du kannst also z.B.
Delphi-Quellcode:
direkt abfragen.
begin
if sender = Trackbar1 then begin // end else if sender = Trackbar2 then begin // end; end; Du kannst dann ggf. auch aus dem Namen die Nummer extrahieren.
Delphi-Quellcode:
Darüber kannst Du dann auch das Label referenzieren.
(sender as TTrackbar).Name[ length((sender as TTrackbar).Name) -1]
Edit Nachtrag: Opal: Herzlich Willkommen in der DP! :party: |
Re: Viele Trackbars aber 1 Procedur
Du kannst auch den Trackbars verschiedene Tag-Werte geben und sie darüber identifizieren. Allen Trackbars die gleiche OnChange-Methode zuweisen und darin die unterscheidung treffen:
Delphi-Quellcode:
Gruß
IF Sender IS TTrackBar THEN
CASE TTrackBar(Sender).Tag OF 1 : {...} // Erste Trackbar wurde geändert 2 : {...} // Zweite Trackbar wurde geändert END; { Case } Stephan |
Re: Viele Trackbars aber 1 Procedur
Zitat:
die ihren Wert gleich mit anzeigt. Die Labels wären dann überflüssig und damit auch die Eventhandler für OnChange. siehe auf ![]() |
Re: Viele Trackbars aber 1 Procedur
THX a lot...sieht irgendwie kompliziert aus. Was sind denn Tags ???
Habe noch ein Problem. Schaut euch mal diesen Code an :
Delphi-Quellcode:
Das müsste doch acuh einfacher gehen oder ??? Habe versucht ne Funktion zu schreiben wo man einfach den wert ( zum Beispiel: Kanonen ) übergibt. Aber das Funktioniert nicht.
// Setzten der Werte Label
frmMain.lblEisenerz.Caption := WertEisenerz; frmMain.lblGold.Caption := WertGold; frmMain.lblSalzstein.Caption := WertSalzstein; frmMain.lblSteine.Caption := WertStein; frmMain.lblEdelsteine.Caption := WertEdelstein; frmMain.lblMamorstein.Caption := WertMamorstein; frmMain.lblWerkzeuge.Caption := WertWerkzeug; frmMain.lblHolz.Caption := WertHolz; frmMain.lblZiegel.Caption := WertZiegel; frmMain.lblMamor.Caption := WertMamor; frmMain.lblNahrung.Caption := WertNahrung; frmMain.lblLeder.Caption := WertLeder; frmMain.lblStoffe.Caption := WertStoffe; frmMain.lblWein.Caption := WertWein; frmMain.lblPelze.Caption := WertPelze; frmMain.lblHeilkrauter.Caption:= WertHeilkrauter; frmMain.lblSchwert.Caption := WertSchwert; frmMain.lblBogen.Caption := WertBogen; frmMain.lblArmbrust.Caption := WertArmbrust; frmMain.lblMuskete.Caption := WertMuskete; frmMain.lblRustung.Caption := WertRustung; frmMain.lblLanze.Caption := WertLanze; frmMain.lblAxt.Caption := WertAxt; frmMain.lblKanonen.Caption := WertKanonen; // Setzten der Werte Trackbar frmMain.tbEisenerz.Position := StrToInt(WertEisenerz); frmMain.tbGold.Position := StrToInt(WertGold); frmMain.tbSalzstein.Position := StrToInt(WertSalzstein); frmMain.tbSteine.Position := StrToInt(WertStein); frmMain.tbEdelsteine.Position := StrToInt(WertEdelstein); frmMain.tbMamorstein.Position := StrToInt(WertMamorstein); frmMain.tbWerkzeuge.Position := StrToInt(WertWerkzeug); frmMain.tbHolz.Position := StrToInt(WertHolz); frmMain.tbZiegel.Position := StrToInt(WertZiegel); frmMain.tbMamor.Position := StrToInt(WertMamor); frmMain.tbNahrung.Position := StrToInt(WertNahrung); frmMain.tbLeder.Position := StrToInt(WertLeder); frmMain.tbStoffe.Position := StrToInt(WertStoffe); frmMain.tbWein.Position := StrToInt(WertWein); frmMain.tbPelze.Position := StrToInt(WertPelze); frmMain.tbHeilkrauter.Position:= StrToInt(WertHeilkrauter); frmMain.tbSchwert.Position := StrToInt(WertSchwert); frmMain.tbBogen.Position := StrToInt(WertBogen); frmMain.tbArmbrust.Position := StrToInt(WertArmbrust); frmMain.tbMuskete.Position := StrToInt(WertMuskete); frmMain.tbRustung.Position := StrToInt(WertRustung); frmMain.tbLanze.Position := StrToInt(WertLanze); frmMain.tbAxt.Position := StrToInt(WertAxt); frmMain.tbKanonen.Position := StrToInt(WertKanonen); Zum Beispiel : frmMain.tb+Übergebener Wert+.Position := ect.... Was anderes fällt mir nicht ein :wall: Wie gesagt Newbie :? |
Re: Viele Trackbars aber 1 Procedur
Zitat:
|
Re: Viele Trackbars aber 1 Procedur
Such hier mal in der nach
![]() Dann gibts Du z.B. rüber [code]procedure SetValue(name: string; wert: integer);[code] In der Mehode suchst Du dann einmal nach lbl+name und einmal nach tb+name. Dann hast Du das enstrpechende Panel bzw. deen namen und kannst dann Position bzw. Caption entsprechend setzen. Du musst diese Methode dann halt pro Dingsbums ;-) einmal aufrufen. Ps: Bitte in Zukunft für eine neue Frage auch einen neuen Thread starten. Das ist einfach übersichtlicher ;-) |
Re: Viele Trackbars aber 1 Procedur
Danke auch dir :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:29 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