Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Keine Scrollbar bei ListBox? (https://www.delphipraxis.net/139082-keine-scrollbar-bei-listbox.html)

Teekeks 23. Aug 2009 07:23


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

himitsu 23. Aug 2009 07:37

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.

Teekeks 23. Aug 2009 08:30

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:

himitsu 23. Aug 2009 08:53

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.

Satty67 23. Aug 2009 10:11

Re: Keine Scrollbar bei ListBox?
 
Zitat:

Zitat von Teekeks
Also mein Problem ist das sich durch die Scrollbar der ListBox eine bei der Form bildet.

Wäre da ein Bild möglich?

Wie himitsu schon geschrieben hat, ist das irgendwie kein typisches Verhalten... wenn es so auftritt wie beschrieben.

Oldy 23. Aug 2009 13:37

Re: Keine Scrollbar bei ListBox?
 
Zitat:

Zitat von Teekeks
OnResize schiebe ich meine Komponenten genau bis an den Rand,

Wenn man das mit Anchors (direkt in der Komponente) macht spart man sich schonmal viel Programmierzeit :) (außer die Felder werden verschoben)

Aber nun zum Hauptproblem.

Zitat:

Zitat von Teekeks
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...

Ich weiß zwar nicht, weshalb die Listbox-Scrollbar die Form Scrollbar beeinflusst, aber dennoch..

Hier die Lösung
Delphi-Quellcode:
if listbox1.items.Count*listbox1.itemheight > listbox1.height then
showmessage('Scrollbar ist da') else
showmessage('Scrollbar ist auf Reisen');
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 :)

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 :)

Oldy 23. Aug 2009 13:40

Re: Keine Scrollbar bei ListBox?
 
//sry doppelpost

Teekeks 23. Aug 2009 15:02

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:
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;
Der Fehler Tritt nicht bei jedem Resize auf...
Ich bin Ratloß, irgendetwas muss ja irgendwann über die Form hinweg wollen...

Findet ihr das?
[edit] im anhang die anordnung...[/edit]

Gruß Teekeks

himitsu 23. Aug 2009 15:08

Re: Keine Scrollbar bei ListBox?
 
nimm mal Form.ClientHeight statt .Height usw. :zwinker:

Teekeks 23. Aug 2009 15:14

Re: Keine Scrollbar bei ListBox?
 
Hi!
Das hats gebracht!
DANKE an euch alle!

Gruß Teekeks


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:13 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