![]() |
Keine Scrollbar bei ListBox?
Hi!
Wie kann ich verhindern das meine Form eine Horizontale oder Vertikale ScrollBar bildet? OnResize schiebe ich meine Komponenten genau bis an den Rand, doch dadurch das eine ListBox eine Scrollbar hat, kommt das noch dazu --> Komponenten schieben sich über den Rand hinweg --> Scrollbar bildet sich. Mein Problem ist eigentlich das ich nicht rauskriege ob jetzt gerade die Komponente eine Scrollbar gebildet hat... Wie kann ich das rauskriegen? HorzScrollBar und VertScrollBar hat ja eine ListBox leider nicht... Also als endfrage: Wie kriege ich raus ob eine ListBox eine Scrollbar hat? Achso: Ich habe Hier Linux und Lazarus... Gruß Teekeks |
Re: Keine Scrollbar bei ListBox?
Also irgendwie versteh ich grade dein Problem nicht :gruebel:
Erst dachte ich du redest hier von der ScrollBar der Form und dann isses plötzlich die der ListBox? Die ScrollBars der Form kannst du über .VertScrollBar und .HorzScrollBar verhindern. Ich weiß grad nicht, ob es eine "einfache" Möglichkeit gibt, um rauszubekommen, ob z.B. bei einer Form Eine eingeblendet ist, aber notfalls braucht man da ja nur zu schauen, ob irgendwelche untergeordnete Komponenten außerhalbdes Client-Bereichs liegen. |
Re: Keine Scrollbar bei ListBox?
Also mein Problem ist das sich durch die Scrollbar der ListBox eine bei der Form bildet.
Die bei der ListBox ist ok, die bei der Form nicht. Um die bei der Form zu verhindern möchte ich rauskriegen ob die ListBox eine hat. Eine ListBox hat kein HorzScrollBar oder VertScrollBar. Ich hoffe ich konnte mich diesesmal verständigen :mrgreen: |
Re: Keine Scrollbar bei ListBox?
ich versteh einfach nicht, warum die ScrollBar der ListBox die der Form beeinflussen soll,
da sich diese nach innen (in die ListBox hinein) ausdehnt, wobei sich die Größe der ListBox nicht ändert und es somit nach außen keinen Einfluß, z.B. auf die Form, haben sollte. |
Re: Keine Scrollbar bei ListBox?
Zitat:
Wie himitsu schon geschrieben hat, ist das irgendwie kein typisches Verhalten... wenn es so auftritt wie beschrieben. |
Re: Keine Scrollbar bei ListBox?
Zitat:
Aber nun zum Hauptproblem. Zitat:
Hier die Lösung
Delphi-Quellcode:
Denn sobald mehr items*13 da sind (die immer eine größe von 13 haben, aber wir wollen ja variabel sein :)) als die listbox groß ist, bildet sich eine scrollbar :)
if listbox1.items.Count*listbox1.itemheight > listbox1.height then
showmessage('Scrollbar ist da') else showmessage('Scrollbar ist auf Reisen'); in meinem Testprogramm sieht das so aus: (natürlich nur zum testen, keinerlei ordnung drinnen)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin if listbox1.items.Count*listbox1.itemheight > listbox1.height then label1.caption:='Da!' else label1.caption:='Weg!' ; end; procedure TForm1.Button2Click(Sender: TObject); begin listbox1.items.add('a'); Button1Click(nil); end; procedure TForm1.Button3Click(Sender: TObject); begin listbox1.items.Delete(0); //Nur zum Test, natürlich wird das bei dir ausführlicher (sicherung, abfrage etc.) Button1Click(nil); end; Hoffe das bringt dir was :) |
Re: Keine Scrollbar bei ListBox?
//sry doppelpost
|
Re: Keine Scrollbar bei ListBox?
Liste der Anhänge anzeigen (Anzahl: 1)
Hi!
Ich habe mittlerweile heraus gefunden dass das Problem auch ohne ScrollBar der ListBox auftritt. Daher bitte ich euch: Könnt ihr mir bei meinem Fehler in den Berechnungen Helfen?
Delphi-Quellcode:
Der Fehler Tritt nicht bei jedem Resize auf...
procedure TFrmMain.FormResize(Sender: TObject);
begin HorzScrollBar.Visible:=false; VertScrollBar.Visible:=false; with BtnPlay do begin Top:=FrmMain.Height-Height; Width:=(FrmMain.Width div 4); Left:=0; end; with BtnPause do begin Top:=FrmMain.Height-Height; Width:=(FrmMain.Width div 4); Left:=(FrmMain.Width div 4); end; with BtnStop do begin Top:=FrmMain.Height-Height; Width:=(FrmMain.Width div 4); Left:=(FrmMain.Width div 4)*3; end; with BtnPrevTrack do begin Top:=FrmMain.Height-Height; Width:=(FrmMain.Width div 8); Left:=(FrmMain.Width div 8)*4; end; with BtnNextTrack do begin Top:=FrmMain.Height-Height; Width:=(FrmMain.Width div 8); Left:=(FrmMain.Width div 8)*5; end; with LBTracks do begin Top:=1; Left:=1; Width:=(FrmMain.Width div 16)*7; Height:=FrmMain.Height-(BtnPlay.Height*2+3); end; with MTrackInfo do begin Top:=1; Left:=4+((FrmMain.Width div 16)*7); Height:=FrmMain.Height-(BtnPlay.Height*4+3); Width:=(FrmMain.Width-Left-1); end; {...} HorzScrollBar.Visible:=false; VertScrollBar.Visible:=false; end; Ich bin Ratloß, irgendetwas muss ja irgendwann über die Form hinweg wollen... Findet ihr das? [edit] im anhang die anordnung...[/edit] Gruß Teekeks |
Re: Keine Scrollbar bei ListBox?
nimm mal Form.ClientHeight statt .Height usw. :zwinker:
|
Re: Keine Scrollbar bei ListBox?
Hi!
Das hats gebracht! DANKE an euch alle! Gruß Teekeks |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:39 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