Hallo,
Ich möchte in einem Programm mehrere Listboxen nebeneinander platzieren und sie dann mit einem "TUpDown" steuern. Dementsprechend brauche ich die Scrollleisten der Listboxen nicht.
Kann man die entfernen oder ausblenden?
Danke!
MTB1Leo
Scrollleiste der Listbox verbergen
Scrollleiste der Listbox verbergen
750GB HDD CPU: i3 boost 3.6Ghz RAM: 12GB GPU: ASUS RADEON R7 270X DC II
Re: Scrollleiste der Listbox verbergen
Geht glaub ich nur bei einem TListView.
Re: Scrollleiste der Listbox verbergen
Prinzipiell geht unter Win7 (zumindest bei mir) das Vorgehen von http://www.lazarusforum.de/viewtopic.php?f=55&t=8030.
Würde ich eine ListBox ohne Scrollbars haben wollen, würde ich diese ohne Scrollbars erstellen. Geht aber nur zur Laufzeit (k.A. ob das unter anderen Platformen auch so funktioniert):
Edit:
PS: Eigentlich ist das eine schöne Übung, um eine eigene Komponente zu erstellen. Dann kann man diese auch per IDE dem Formular hinzufügen
Würde ich eine ListBox ohne Scrollbars haben wollen, würde ich diese ohne Scrollbars erstellen. Geht aber nur zur Laufzeit (k.A. ob das unter anderen Platformen auch so funktioniert):
Code: Alles auswählen
uses ... LCLType;
type
{ TMyListBox }
TMyListBox = class(TCustomListBox)
procedure CreateParams(var Params: TCreateParams); override;
end;
{ TForm1 }
TForm1 = class(TForm)
...
private
ListBox1: TMyListBox;
end;
...
procedure TMyListBox.CreateParams(
var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style:=Params.Style xor WS_HSCROLL xor WS_VSCROLL;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1:=TMyListBox.Create(Self);
ListBox1.Parent:=Self;
...
end;
PS: Eigentlich ist das eine schöne Übung, um eine eigene Komponente zu erstellen. Dann kann man diese auch per IDE dem Formular hinzufügen

Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Scrollleiste der Listbox verbergen
Michis Lösung geht auch unter dem Namen TListbox, wenn man den Vorfahren mit "StdCtrls.TListBox" qualifiziert und die Unit, in der dies implementiert wird, nach StdCtrl aufruft. Dieses recht elegante, aber auch fehleranfällige Verfahren wird von einigen Leuten aus der Delphi-Community propagiert (z.B. http://stackoverflow.com/questions/1478 ... and-use-it).
Code: Alles auswählen
unit Unit1; // ein Formular mit einer Listbox
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, unit2;
type
{ TForm1 }
TForm1 = class(TForm)
ListBox1: TListBox;
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
end.
--------------------
unit Unit2; // Unit, in der die scrollbar-lose Listbox implementiert wird
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, StdCtrls, LCLType;
type
TListbox = class(StdCtrls.TListbox)
protected
procedure CreateParams(var Params: TCreateParams); override;
end;
implementation
procedure TListBox.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style:=Params.Style xor WS_HSCROLL xor WS_VSCROLL;
end;
end.
Re: Scrollleiste der Listbox verbergen
Ich weiss ja nicht welche Ansprüche ihr habt, aber das funktioniert unter GTK2 und Qt nicht afaics, und ist für mich daher keine Lösung.
TListView geht.
TListView geht.
Re: Scrollleiste der Listbox verbergen
Ich wollte nur die Frage beantworten und hatte auch die vermutlichen Grenzen aufgezeigt (und wenn man mal die Suchmaschine bemüht, wir die Frage sehr oft aufgeworfen, mit wesentlich komplizierteren Lösungsansätzen, als das o.g. Bsp.)
Natürlich stimme ich Dir zu, dass eine Komponente, die so ein Verhalten von Haus aus bietet, dadurch getestet ist, besser geeignet ist!!!
Natürlich stimme ich Dir zu, dass eine Komponente, die so ein Verhalten von Haus aus bietet, dadurch getestet ist, besser geeignet ist!!!
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;