30. november 2000 - 13:26Der er
16 kommentarer og 1 løsning
Slet listbox
er der en der kan se hvad der er galt med min kode ? når jeg forsøger at slette et X antal listbox så slettes den første og jeg får en fejl meddelse
procedure TFrmpulje.Button1Click(Sender: TObject); var Index : Integer; begin For Index := 0 To ScrollBox1.ComponentCount-1 Do If ScrollBox1.Components[Index] is TListBox Then Begin FListBox.Free; FListBox:=nil; end; end;
Hvis du vil have \"lidt baggrund\" så er problemet at du måske starter ud med at have 10 componenter i din scroll box, men når du har slettet de 5 første (0-4) og forsøger at slette element nummer 5 så findes dette ikke længere \"i listen\" da den på det tidspunkt kun indeholder 0, 1, 2, 3, 4.
Dette problem løser du ved at \"tælle baglæns\". I så fald der er 10 elementer så starter du med at slette element 9 (som er det sidste) dernæst element 8 som nu er det sidste og så fremdeles.
At der er penge i det kan være med til at \"hæve mordskaben\", men jeg savner ikke Pascal Pre-Delphi hvor man skulle nørkle med sine egne windows- evenet- handles og jeg skal komme efter dig.
Borland Pascal for Windows 1.0 - jubii!! Sjældent har set noget så vammelt... Jeg havde engang en enkelt opgave, der skulle laves til Win 3.1. Jeg forsøgte først at lave den i BPfW, men opgav da det simpelthen bare tog alt for lang tid at sætte sig ind i det. Heldigvis var det da stadig legalt at lave Dos programmer, med Visio (sp?), i Borland Pascal.
Længe leve Delphi 1 - det var en redning for mange.
jeg har nu ændret min løkke om til: \"For Index := ScrollBox1.ComponentCount-1 downto 0\" men den sletter kun den sidste listbox
min kode ser sådan her ud :
procedure TFrmpulje.Button1Click(Sender: TObject); var Index : Integer; begin For Index := ScrollBox1.ComponentCount-1 downto 0 Do If ScrollBox1.Components[Index] is TListBox Then Begin FListBox.Free; FListBox:=nil; end; end;
1: FListBox er ikke sat til noget fornuftigt. Lav koden om til:
Var Index : Integer; FlistBox : Tlistbox; begin For Index := ScrollBox1.ComponentCount-1 downto 0 Do If ScrollBox1.Components[Index] is TListBox Then Begin FlistBox := ScrollBox1.Components[Index] As TListBox; FListBox.Free; FListBox:=nil; end; end;
2: Du har sikkert oprettet dine listboxes med din form som owner, altså noget i retning af: TlistBox.Create(Self)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.