Avatar billede anold Nybegynder
30. november 2000 - 13:26 Der 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;
Avatar billede pellelil Nybegynder
30. november 2000 - 13:30 #1
Lav din løkke om til: \"For Index := ScrollBox1.ComponentCount-1 downto 0\"
Avatar billede moa Nybegynder
30. november 2000 - 13:30 #2
Det ligner den gode gamle med at din løkke jo sådan set ændrer i ComponentCount! -> løsning: Slet dem bagfra:

for i := ScrollBox1.ComponentCount-1 downto 0 do
....
Avatar billede borrisholt Novice
30. november 2000 - 13:30 #3
brug RemoveComponent.

Jens B
Avatar billede moa Nybegynder
30. november 2000 - 13:31 #4
TRE SEKUNDER!! - Æv - Pellelil ;-)
Avatar billede pellelil Nybegynder
30. november 2000 - 13:34 #5
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.
Avatar billede pellelil Nybegynder
30. november 2000 - 13:36 #6
moa> 3 sekunder her og 3 sekunder der det bliver lyn hurtig til 6 sekunder  :-)

borrisholt> Det var for nemt - har du ellers haft tid til at kigge på \"assign\" ?
Avatar billede borrisholt Novice
30. november 2000 - 13:39 #7
Pelle > nej ikke lige. Jeg sidder lige og forsøger at lave en ScreenSaver i ren win32.

Jens B
Avatar billede pellelil Nybegynder
30. november 2000 - 13:40 #8
Er du ikke blevet \"for gammel\" til at rode med \"det der C:=C+1;\"  ;-)
Avatar billede borrisholt Novice
30. november 2000 - 13:45 #9
Hmmn ... Det får jeg faktisk penge for hver dag ....

Ren win32 programmering synes jeg fakrisk er sjovt. eller i hvert fald sjovere end MFC, ALT og ZAPP.

Jens B
Avatar billede pellelil Nybegynder
30. november 2000 - 13:48 #10
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.
Avatar billede delphi Nybegynder
30. november 2000 - 14:37 #11
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.

Delphi
Avatar billede anold Nybegynder
01. december 2000 - 08:08 #12
Sådan noget lo..

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;


Hvad er der galt ???
Avatar billede pellelil Nybegynder
01. december 2000 - 09:15 #13
En ting er at du free\'er dine Listboxe men skal du ikke også \"fortælle\" din ScrollBox at disse ikke længere findes !?
Avatar billede anold Nybegynder
01. december 2000 - 09:22 #14
Hvordan skal jeg gøre det ?
Der sker ikke noget nor jeg skriver
ScrollBox1.Update
Avatar billede delphi Nybegynder
01. december 2000 - 09:38 #15
Du har to problemer:

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)

Dette skal ændre til:
TlistBox.Create(ScrollBox1)

Delphi

Avatar billede anold Nybegynder
01. december 2000 - 09:58 #16
Sådan nu virker det
Hill dig du store Delphi master
Avatar billede delphi Nybegynder
01. december 2000 - 10:06 #17
:) fedterøv...
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester