AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf Scrollbox Objekte

Ein Thema von meg91 · begonnen am 7. Mai 2006 · letzter Beitrag vom 8. Mai 2006
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von meg91
meg91

Registriert seit: 25. Apr 2006
131 Beiträge
 
Turbo Delphi für Win32
 
#1

Zugriff auf Scrollbox Objekte

  Alt 7. Mai 2006, 20:20
Hallo
hab folgendes Problem:
ich erstelle Objekte auf einer Scrollbox und zwar ist das immer die gleiche Kombination, welche aus 3 Objekten besteht
jetzt hab ich versucht bei klick auf irgendeins dieser x-mal 3 Objekten eine Prozedur anzusprechen, die auf die caption des angelickten Objekts zugreifen soll
aber ich bekomme immer nur die caption des zuletzt erstellten Objekts

ich vermute mal das es mit den gleichen Namen der Objekte zusammen hängt

gibt es eine Möglichkeit die Namen irgendwie dynamisch zu ändern oder vllt soagr ne bessere Lösung

Gruß
meg
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Zugriff auf Scrollbox Objekte

  Alt 7. Mai 2006, 22:39
So wie es klingt erstellst du die drei Objekte immer in der gleichen Instanzenvariable, also in etwa so:

Delphi-Quellcode:
var Btn: TButton;

...

procedure NewBtn;
begin
...
  Btn := TButton.Create(ScrollBox);
...
end;

...
Damit wird bei jedem Aufruf von NewBtn zwar wie gewollt ein neues Button-Objekt erstellt, aber dieses "überschreibt" die jeweils vorherige Instanz. Du solltest deine Buttons in einem dyn. Array oder einer ObjectList verwalten, um auf alle erstellten Instanzen zugreifen zu können.
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
Benutzerbild von meg91
meg91

Registriert seit: 25. Apr 2006
131 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Zugriff auf Scrollbox Objekte

  Alt 8. Mai 2006, 10:34
könntest du mir vllt ein konkretes Code Bsp geben, denn ich hab kein Plan wie das geh soll
Danke!
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#4

Re: Zugriff auf Scrollbox Objekte

  Alt 8. Mai 2006, 10:38
Hi!

z.B. so:

Delphi-Quellcode:
var
  BtnArray: Array of TButton;
  i: integer;
begin
 setlength(BtnArray, 3)
 for i:=0 to length(BtnArray)-1 do
  begin
    BtnArray[i]:=Tbutton.Create;
    Btnarray[i].Parent:=Form1;
    ...
  end;
end;
War jetzt mal so ausm Kopf - also kein Gewehr


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von meg91
meg91

Registriert seit: 25. Apr 2006
131 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Zugriff auf Scrollbox Objekte

  Alt 8. Mai 2006, 13:40
kann ich dann bei setlength die zahl immer ändern, denn ich weis im voraus nicht wie viel Objekte das werden?
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#6

Re: Zugriff auf Scrollbox Objekte

  Alt 8. Mai 2006, 13:43
Hi!

Ich weiß ja nicht, wie du deine Buttons erstellst. Alternativ würde auch sowas gehen:

Delphi-Quellcode:
//beim erzeugen:
setlength(btnarray,0);

//VOR dem erzeugen eines neuen Buttons:
setlength(btnarray, length(btnarray)+1);
btnarray[high]:=TButton.Create;
...
wie immer ohne Schusswaffen...


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von meg91
meg91

Registriert seit: 25. Apr 2006
131 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Zugriff auf Scrollbox Objekte

  Alt 8. Mai 2006, 14:15
erstmal vielen Dank
aber ich hab scho wieder ein Problem und zwar muss ich dann auch auslesen, welchen Namen das angeklickte objekt hat
die greifen nämlich alle auf dieselbe Prozedur zurück und ich muss dann die Aktion abhänig vom Namen machen, sprich welcher Button geklickt worden ist
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#8

Re: Zugriff auf Scrollbox Objekte

  Alt 8. Mai 2006, 14:37
Hi!

Dann kannst du das über den Sender auslesen.
z.B. kannst du jedem Button einen anderen Tag setzen (es handelt sich dabei um einen Integer)

Delphi-Quellcode:
//z.B. so auslesen
if Sender is TButton then
  case (Sender as TButton).Tag of
   1: //Button mit Tag 1
   2: //Button mit Tag 2
  end;

Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
mbamler

Registriert seit: 19. Mai 2005
Ort: Hamburg
118 Beiträge
 
Delphi 7 Architect
 
#9

Re: Zugriff auf Scrollbox Objekte

  Alt 8. Mai 2006, 14:44
Zitat von fkerber:
Hi!

Dann kannst du das über den Sender auslesen.
z.B. kannst du jedem Button einen anderen Tag setzen (es handelt sich dabei um einen Integer)

Delphi-Quellcode:
//z.B. so auslesen
if Sender is TButton then
  case (Sender as TButton).Tag of
   1: //Button mit Tag 1
   2: //Button mit Tag 2
  end;

Ciao Frederic

Vergib nach dem Kreieren jeder Komponente einen eindeutigen Namen:
z.B. meinobjekt.name := 'Name' + IntToStr(i);

und dann beim Zugreifen mit FindComponent die jeweilige Komponente suchen:
z.B. for i := 1 to 10 do
TButton(FindComponent('Button' + IntToStr(i))).Visible := true;


Gruß
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#10

Re: Zugriff auf Scrollbox Objekte

  Alt 8. Mai 2006, 14:49
Hi!

Er will ja feststellen, welcher Button geklickt wurde, da alle die selbe Click-Procedure haben sollen.
Da geht das mit Sender sehr gut - mit FindComponent wohl eher nicht, er weiß nicht, was er "finden" soll.


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 Uhr.
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