/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Selecte samme i flere TListBoxe ?
Fra : Ulrik Vadstrup


Dato : 17-08-02 18:04

Jeg har flere tListBox'e som "følges" ad, der for vil jeg gerne
selecte/highlighte det samme item, nå jeg trykker på en af dem, jeg har
lavet følgende:

procedure TfrmMain.pSelectSame(const iCaller: TListBox);
var
i, j:Integer;
begin
For i := 0 to iCaller.Items.Count-1 do
if iCaller.Selected[i] Then
Begin
for j := 0 to frmMain.ComponentCount-1 do
If (frmMain.Components[j] is TListBox) AND (frmMain.Components[j] <>
iCaller) Then
TListBox(frmMain.Components[j]).Selected[i] := True;
end;
end;

Som jeg kører på en MouseUp hændelse, men der giver fejl, "Out of bounds 0"

Hva gør jeg galt, skal jeg give Focus først ?



--
Med venlig hilsen
Ulrik Vadstrup



 
 
Harald (17-08-2002)
Kommentar
Fra : Harald


Dato : 17-08-02 22:05

"Ulrik Vadstrup" <blackend@blackend.dk> skrev i en meddelelse
news:3d5e827b$0$94825$edfadb0f@dspool01.news.tele.dk...
> Jeg har flere tListBox'e som "følges" ad, der for vil jeg gerne
> selecte/highlighte det samme item, nå jeg trykker på en af dem, jeg har
> lavet følgende:
>
> procedure TfrmMain.pSelectSame(const iCaller: TListBox);
> var
> i, j:Integer;
> begin
> For i := 0 to iCaller.Items.Count-1 do
> if iCaller.Selected[i] Then
> Begin
> for j := 0 to frmMain.ComponentCount-1 do
> If (frmMain.Components[j] is TListBox) AND (frmMain.Components[j]
<>
> iCaller) Then
> TListBox(frmMain.Components[j]).Selected[i] := True;
> end;
> end;
>
> Som jeg kører på en MouseUp hændelse, men der giver fejl, "Out of bounds
0"
>
> Hva gør jeg galt, skal jeg give Focus først ?

Jeg gætte på at en af dine ListBoxe er tom så derfor giver denne linie
fejlen:
TListBox(frmMain.Components[j]).Selected[i] := True;

Mvh
HK




Ulrik Vadstrup (18-08-2002)
Kommentar
Fra : Ulrik Vadstrup


Dato : 18-08-02 10:43

"Harald" <swobu@kroning.dk> wrote in message
news:3d5eba7f$0$94809$edfadb0f@dspool01.news.tele.dk...
> "Ulrik Vadstrup" <blackend@blackend.dk> skrev i en meddelelse
> news:3d5e827b$0$94825$edfadb0f@dspool01.news.tele.dk...
> > Jeg har flere tListBox'e som "følges" ad, der for vil jeg gerne
> > selecte/highlighte det samme item, nå jeg trykker på en af dem, jeg har
> > lavet følgende:
> >
> > procedure TfrmMain.pSelectSame(const iCaller: TListBox);
> > var
> > i, j:Integer;
> > begin
> > For i := 0 to iCaller.Items.Count-1 do
> > if iCaller.Selected[i] Then
> > Begin
> > for j := 0 to frmMain.ComponentCount-1 do
> > If (frmMain.Components[j] is TListBox) AND (frmMain.Components[j]
> <>
> > iCaller) Then
> > TListBox(frmMain.Components[j]).Selected[i] := True;
> > end;
> > end;
> >
> > Som jeg kører på en MouseUp hændelse, men der giver fejl, "Out of bounds
> 0"
> >
> > Hva gør jeg galt, skal jeg give Focus først ?
>
> Jeg gætte på at en af dine ListBoxe er tom så derfor giver denne linie
> fejlen:
> TListBox(frmMain.Components[j]).Selected[i] := True;
>
> Mvh
> HK

Ja, den havde jeg ikke lige tænkt på, ved ikke hellt om det er tilfældet,
men jeg laver et check på Items.Count > 0, så ser jeg om det hjælper

Takker

Ulrik



Ulrik Vadstrup (18-08-2002)
Kommentar
Fra : Ulrik Vadstrup


Dato : 18-08-02 12:45

"Ulrik Vadstrup" <blackend@blackend.dk> wrote in message
news:3d5f6c8b$0$94763$edfadb0f@dspool01.news.tele.dk...
> "Harald" <swobu@kroning.dk> wrote in message
> news:3d5eba7f$0$94809$edfadb0f@dspool01.news.tele.dk...
> > "Ulrik Vadstrup" <blackend@blackend.dk> skrev i en meddelelse
> > news:3d5e827b$0$94825$edfadb0f@dspool01.news.tele.dk...
> > > Jeg har flere tListBox'e som "følges" ad, der for vil jeg gerne
> > > selecte/highlighte det samme item, nå jeg trykker på en af dem, jeg
har
> > > lavet følgende:
> > >
> >
> > Jeg gætte på at en af dine ListBoxe er tom så derfor giver denne linie
> > fejlen:
> > TListBox(frmMain.Components[j]).Selected[i] := True;
> >
> > Mvh
> > HK
>
> Ja, den havde jeg ikke lige tænkt på, ved ikke hellt om det er tilfældet,
> men jeg laver et check på Items.Count > 0, så ser jeg om det hjælper
>
> Takker
>
> Ulrik
>
Nej, ingen held, nu har jeg lavet følgende :

procedure TfrmMain.pSelectSame(const iCaller: TListBox);
var
i, j:Integer;
begin
For i := 0 to iCaller.Items.Count-1 do
if iCaller.Selected[i] Then
Begin
for j := 0 to frmMain.ComponentCount-1 do
If (frmMain.Components[j] is TListBox) AND (frmMain.Components[j] <>
iCaller) AND
(TListBox(frmMain.Components[j]).Items.count > 0) Then
Begin
frmMain.ActiveControl := TListBox(frmMain.Components[j]);
TListBox(frmMain.Components[j]).Selected[i] := True;
end;
end;
end;

Jeg laver Selected på 0 som har en tekst i alle listboxe

Og får stadig fejl - nogen der kan gennemskue den ?

Mvh

Ulrik



Harald (18-08-2002)
Kommentar
Fra : Harald


Dato : 18-08-02 19:08

"Ulrik Vadstrup" <blackend@blackend.dk> skrev i en meddelelse
news:3d5f8920$0$94747$edfadb0f@dspool01.news.tele.dk...
> "Ulrik Vadstrup" <blackend@blackend.dk> wrote in message
> news:3d5f6c8b$0$94763$edfadb0f@dspool01.news.tele.dk...
> > "Harald" <swobu@kroning.dk> wrote in message
> > news:3d5eba7f$0$94809$edfadb0f@dspool01.news.tele.dk...
> > > "Ulrik Vadstrup" <blackend@blackend.dk> skrev i en meddelelse
> > > news:3d5e827b$0$94825$edfadb0f@dspool01.news.tele.dk...
> > > > Jeg har flere tListBox'e som "følges" ad, der for vil jeg gerne
> > > > selecte/highlighte det samme item, nå jeg trykker på en af dem, jeg
> har
> > > > lavet følgende:
> > > >
> > >
> > > Jeg gætte på at en af dine ListBoxe er tom så derfor giver denne linie
> > > fejlen:
> > > TListBox(frmMain.Components[j]).Selected[i] := True;
> > >
> > > Mvh
> > > HK
> >
> > Ja, den havde jeg ikke lige tænkt på, ved ikke hellt om det er
tilfældet,
> > men jeg laver et check på Items.Count > 0, så ser jeg om det hjælper
> >
> > Takker
> >
> > Ulrik
> >
> Nej, ingen held, nu har jeg lavet følgende :
>
> procedure TfrmMain.pSelectSame(const iCaller: TListBox);
> var
> i, j:Integer;
> begin
> For i := 0 to iCaller.Items.Count-1 do
> if iCaller.Selected[i] Then
> Begin
> for j := 0 to frmMain.ComponentCount-1 do
> If (frmMain.Components[j] is TListBox) AND (frmMain.Components[j]
<>
> iCaller) AND
> (TListBox(frmMain.Components[j]).Items.count > 0) Then
> Begin
> frmMain.ActiveControl := TListBox(frmMain.Components[j]);
> TListBox(frmMain.Components[j]).Selected[i] := True;
> end;
> end;
> end;
>
> Jeg laver Selected på 0 som har en tekst i alle listboxe
>
> Og får stadig fejl - nogen der kan gennemskue den ?

Jeg har smidt 3 listboxe ind på en form, fyldt samme antal linier i hver af
dem og har så prøvet med begge dine procedurer og de virker fint her.

Er det stadig "Out of bounds 0" fejlen du får?

Hvordan kalder du proceduren pSelectSame?

Mvh
HK




Ulrik Vadstrup (19-08-2002)
Kommentar
Fra : Ulrik Vadstrup


Dato : 19-08-02 14:14

"Harald" <swobu@kroning.dk> wrote in message
news:3d5fe280$0$27666$edfadb0f@dspool01.news.tele.dk...

> Jeg har smidt 3 listboxe ind på en form, fyldt samme antal linier i hver
af
> dem og har så prøvet med begge dine procedurer og de virker fint her.
>
> Er det stadig "Out of bounds 0" fejlen du får?
>
> Hvordan kalder du proceduren pSelectSame?
>
> Mvh
> HK
>
Tja - nu har jeg godt nok kun prøvet på listboxe med en tekst

Jeg mener den er lavet på MouseUp eventen, kan det være et problem ?

Ja det er stadig "Out of bounds 0" fejlen

Mvh
Ulrik




David A. D. Konrad (19-08-2002)
Kommentar
Fra : David A. D. Konrad


Dato : 19-08-02 14:32

"Ulrik Vadstrup" <vadstrup@post12.tele.dk> skrev i en meddelelse
news:3d60f014$0$27674

> Ja det er stadig "Out of bounds 0" fejlen

Den *kan* altså kun forekomme i din kode hvis

1) du tilgår en tom listbox.items
2) du tilgår en tom components

....Så det er et af de to steder, og så er det jo blot at steppe løkkerne
igennem indtil du finder fejlen. Hvis du er i tvivl om helt præcist hvilken
listbox/component det drejer sig om, så sørg for at have name-propertyen i
dine watches imens. Hvorfor looper du egentlig igennem din form med
components? Det kan da i visse tilfælde være et voldsomt overhead.



Ulrik Vadstrup (19-08-2002)
Kommentar
Fra : Ulrik Vadstrup


Dato : 19-08-02 18:46

"David A. D. Konrad" <david_konrad@hotmail.com> wrote in message
news:ajqrvr$ms$1@sunsite.dk...
> "Ulrik Vadstrup" <vadstrup@post12.tele.dk> skrev i en meddelelse
> news:3d60f014$0$27674
>
> > Ja det er stadig "Out of bounds 0" fejlen
>
> Den *kan* altså kun forekomme i din kode hvis
>
> 1) du tilgår en tom listbox.items
> 2) du tilgår en tom components
>
> ...Så det er et af de to steder, og så er det jo blot at steppe løkkerne
> igennem indtil du finder fejlen. Hvis du er i tvivl om helt præcist
hvilken
> listbox/component det drejer sig om, så sørg for at have name-propertyen i
> dine watches imens.

procedure TfrmMain.pSelectSame(const iCaller: TListBox);
var
i, j:Integer;
tstVar: String;
begin
For i := 0 to iCaller.Items.Count-1 do
if iCaller.Selected[i] Then
Begin
for j := 0 to frmMain.ComponentCount-1 do
If (frmMain.Components[j] is TListBox) AND (frmMain.Components[j] <>
iCaller) AND
(TListBox(frmMain.Components[j]).Items.count > 0) Then
Begin
frmMain.ActiveControl := TListBox(frmMain.Components[j]);
* tstVar := TListBox(frmMain.Components[j]).name;
TListBox(frmMain.Components[j]).Selected[i] := True;
end;
end;
end;


Breakpoint ved *

Ved debug vises følgende

Første LstBox hedder lstNames, og det er ikke denne der er klikket på...

(TListBox(frmMain.Components[j]).Items.count > 0)

Count retunerer 1

tstVar := TListBox(frmMain.Components[j]).name;

tstVar retunerer "lstNames"

j retuner 8 og i retunerer 0

Jeg kan sku ikke lure den...


Hvorfor looper du egentlig igennem din form med
> components? Det kan da i visse tilfælde være et voldsomt overhead.
>

Hvad kunne en alternertiv metode være ?

Mvh
Ulrik



David A. D. Konrad (21-08-2002)
Kommentar
Fra : David A. D. Konrad


Dato : 21-08-02 18:48

"Ulrik Vadstrup" <blackend@blackend.dk> skrev i en meddelelse
news:3d612f65$0$94734

> Første LstBox hedder lstNames, og det er ikke denne der er klikket på...
>
> (TListBox(frmMain.Components[j]).Items.count > 0)
>
> Count retunerer 1
>
> tstVar := TListBox(frmMain.Components[j]).name;
>
> tstVar retunerer "lstNames"
>
> j retuner 8 og i retunerer 0
>
> Jeg kan sku ikke lure den...

Det kan jeg heller ikke, men sender du mig dit projekt skal jeg gerne finde
fejlen for dig.



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste