Hallo alle,
ich kann zwar in der TListBox die Eigenschaft "columns" setzen, aber ich habe keine Möglichkeit gefunden, diese Spalten auch zu beschreiben, evtl. auch die einezelnen Werte in einer Spalte zu verändern...
Für Hilfe bin ich Dankbar
udo
Listbox mehrspaltig
Re: Listbox mehrspaltig
Nein - eine mehrspaltige TListbox ist kein TStringGrid. Du gibst genauso wie bei einer normalen, einspaltigen Listbox die Werte in eine lineare, 1-dimensionale Stringliste ein. Die Listbox füllt zunächst die 1. Spalte in Höhe der Listbox auf, dann die zweite. Falls dann noch Werte übrig sind, werden weitere Spalten angehängt. Die Zahl, die man bei Columns einträgt, bestimmt nur den Abstand zwischen den Spalten - d.h. bei Columns = 2 finden zwei Spalten nebeneinander Platz ohne dass der horizontale Scrollbalken erscheint, bei Columns=3 entsprechend 3. Wenn sich mit dem Fenster z.B. die Listbox-Höhe verändert, werden die Werte entsprechend neu eingruppiert. Die mehrspaltige Listbox verhindert also den vertikalen Scrollbar und verwendet stattdessen bei Bedarf einen horizontalen. Du kannst bei einer mehrspaltigen Listbox also kaum vorhersagen, welcher Wert z.B. in der 2. Spalte und 4. Zeile landet...
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Listbox mehrspaltig
Unter Delphi gibt es so was, aber unter Lazarus scheint es nicht zu funktionieren.
http://docwiki.embarcadero.com/Librarie ... tBox.Items
http://docwiki.embarcadero.com/Librarie ... tBox.Items
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 201
- Registriert: Do 24. Jan 2013, 21:22
Re: Listbox mehrspaltig
Hallo Udo,
habe im SwissDelphiCenter ein paar Code-Brocken gefunden, die im Laz auch funzen.
Aber:
1) TListbox geht nicht , sondern nur TMemo.
2) Man muß Windows unter Uses einbinden , wegen Sendmessage.
Bau dir auf eine leer Form einen Button und ein breites Memo .
Hier noch der Code .
Gruss Frank
habe im SwissDelphiCenter ein paar Code-Brocken gefunden, die im Laz auch funzen.
Aber:
1) TListbox geht nicht , sondern nur TMemo.
2) Man muß Windows unter Uses einbinden , wegen Sendmessage.
Bau dir auf eine leer Form einen Button und ein breites Memo .
Hier noch der Code .
Gruss Frank
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
windows;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
const
// Die Anzahl der maximal aufretenen Tabs eintragen
MAX_TABS = 4;
Tab = #9;
var
Tabulators: array[0..MAX_TABS] of Integer;
begin
// Tabstops
Tabulators[0] := 110;
Tabulators[1] := 160;
Tabulators[2] := 250;
Tabulators[3] := 350;
// Tabulatoren setzen
SendMessage(memo1.Handle, EM_SETTABSTOPS, MAX_TABS, Longint(@Tabulators));
// Items hinzufügen
memo1.Clear;
memo1.lines.Add('AAAAAAAAAA ' + Tab + 'BBBBBBB' + Tab + '1234-56' + Tab + 'CCCCCCCC');
memo1.lines.Add('EEEEEEEEEEEEEEEEEEE' + Tab + 'FFFFFFFFFF' + Tab + '68974787878787');
memo1.lines.Add('GGGGGG' + Tab + 'HHHHHHH' + Tab + '98754-654');
end;
end.
www.flz-vortex.de
Re: Listbox mehrspaltig
Du suchst wahrscheinlich TListView. Das kann mehrspaltig. Bei TListview muss man sich aber etwas einlesen.
LG
LG
-
- Beiträge: 369
- Registriert: Do 8. Jun 2017, 18:21
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
- CPU-Target: 64Bit
- Wohnort: Wien
Re: Listbox mehrspaltig
Das angegebene Beispiel funktioniert - Für alle, die danach suchen, zwei Bemerkungen:Frank Ranis hat geschrieben: ↑Di 15. Mär 2016, 15:32habe im SwissDelphiCenter ein paar Code-Brocken gefunden, die im Laz auch funzen.
Code: Alles auswählen
Tabulators: array[0..MAX_TABS] of Integer;
Code: Alles auswählen
Tabulators: array[0..MAX_TABS-1] of Integer;
Was mir völlig rätselhaft ist, Sendmessage stürzt mit einem SIGSEV Fehler ab, wenn man Tabulators statt als Variable als typed Constant definiert und schon zur Compilezeit initialisiert. Warum das der Fall ist, verstehe ich nicht - werden denn typed constants von Free Pascal nicht genauso wie Variable im Speicher abgelegt?