Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ListView - Erste Spalte in Fett ? (https://www.delphipraxis.net/98443-listview-erste-spalte-fett.html)

moelski 27. Aug 2007 15:42


ListView - Erste Spalte in Fett ?
 
Moin !

Ich habe ein ListView mit 3 Spalten. Die erste Spalte hätte ich gerne in Fett.
Habe dazu diesen Code verwendet:
Delphi-Quellcode:
procedure TGeraetPort_Form.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  if (Item=nil) then Exit;
  Sender.Canvas.Font.Style := [fsBold];
end;

procedure TGeraetPort_Form.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
  with Sender.Canvas do begin
    case SubItem of
      0, 1, 2 : Font.Style := [];
    end;
  end;
end;
Aber das Ergebnis ist immer das Spalte 1 und 2 in Fett sind und nur Spalte 3 ist nicht Fett.

Kann mir jemand nen Tip geben wo ich nun schief liege ? :gruebel:

marabu 27. Aug 2007 15:54

Re: ListView - Erste Spalte in Fett ?
 
Hallo Dominik,

in deinem Fall sollte das helfen:

Delphi-Quellcode:
procedure TDemoForm.ListViewCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  with Sender.Canvas.Font do
    Style := Style + [fsBold];
end;

procedure TDemoForm.ListViewCustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
  with Sender.Canvas.Font do
    Style := Style - [fsBold];
end;
Grüße vom marabu

moelski 27. Aug 2007 16:03

Re: ListView - Erste Spalte in Fett ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin !

Nö auch in diesem Fall ist leider die zweite Spalte Fett.

marabu 27. Aug 2007 16:10

Re: ListView - Erste Spalte in Fett ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mein Code produziert das angehängte Bild.

Wo ist dein Code (Demo-Projekt oder DFM/PAS), mit dem es nicht funktioniert?

moelski 27. Aug 2007 16:15

Re: ListView - Erste Spalte in Fett ?
 
Moin !

Moin Code ... UARGH ...
Das ist in unsere Anwendung. Alles wird schwierig, aber ich poste mal das relevante ...

Delphi-Quellcode:
procedure TGeraetPort_Form.FillSelectBox;
var AppPath, INIFile : String;
    _i               : Integer;
    DeviceINI        : TINIFile;
    Name, Hersteller : String;
    Port             : String;
    Checked          : Boolean;
    INIListe         : TStringList;
    Item             : TListItem; //Wichtig!!
begin
  SiMain.TrackMethod('FillSelectBox');
  ListView1.Items.BeginUpdate;
  ListView1.Clear;
  INIListe := ListINIFiles(ExtractFilePath(ParamStr(0)));
  SiMain.LogMessage('Anzahl Items : ' + IntToStr(INIListe.Count));
  AppPath := ExtractFilePath(ParamStr(0));
  SiMain.LogMessage(AppPath);
  // Pfad + INI Name -> AppPath + 'Geraete\' + Liste[_i]
  For _i := 0 to INIListe.Count -1 do
  begin         // copy(Liste[_i], 1, length(Liste[_i]) - 4);
    INIFile   := AppPath + 'Geraete\' + INIListe[_i];
    DeviceINI := TINIFile.Create(INIFile);
    Name      := copy(INIListe[_i], 1, length(INIListe[_i]) - 4); //DeviceINI.ReadString('Gerät', 'Name', 'NO NAME');
    Hersteller := DeviceINI.ReadString('Gerät', 'Hersteller', 'NO VENDOR');
    Checked   := DeviceINI.ReadBool('Gerät', 'Used', False);
    Port      := DeviceINI.ReadString('serielle Schnittstelle', 'Port', '---');

    Item := ListView1.Items.Add;
    Item.Caption := Name;
    Item.SubItems.Add(Hersteller);
    Item.SubItems.Add(Port);
    Item.Checked := Checked;

    DeviceINI.Free;
  end;
  ListView1.Items.EndUpdate;
end;
Hier wird gefüllt

Und hier halt die Events:
Delphi-Quellcode:
procedure TGeraetPort_Form.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
{
    with Sender.Canvas.Font do
      Style := Style + [fsBold];
}
end;

procedure TGeraetPort_Form.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
{
    with Sender.Canvas.Font do
      Style := Style - [fsBold];
}
end;
Derzeit auskommentiert ...

marabu 27. Aug 2007 16:33

Re: ListView - Erste Spalte in Fett ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Dein Code ist nicht in sich abgeschlossen, also hänge ich dir mal mein Test-Projekt an.

Ruf an, sobald du es so verbogen hast, dass die zweite Spalte fett erscheint.

moelski 28. Aug 2007 06:29

Re: ListView - Erste Spalte in Fett ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin !

Hmm, das ist interessant.
Dein Projekt tut bei mir auch nicht ....

Kann es sein das unter D2007 die Sache etwas anders muss ?

dominikkv 28. Aug 2007 07:03

Re: ListView - Erste Spalte in Fett ?
 
jo, ich hab auch D2007 und beide Spalten werden fett dargestellt.
mir fehlt aber grad die zeit mir das mal genauer anzuschauen^^

edit: schreibfehler

moelski 28. Aug 2007 16:24

Re: ListView - Erste Spalte in Fett ?
 
Moin !

Problem gelöst :zwinker:
Wenn der Berg nicht zu mir will muss ich zum Berg oder wie war das noch :gruebel:

Also, man setze den Font der ListBox auf Bold ...
Und dann nur das hier:
Delphi-Quellcode:
procedure TDemoForm.ListViewCustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
  with Sender.Canvas.Font do
    Style := Style - [fsBold];  
end;
Fertsch :mrgreen:

Keep on :coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 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 by Thomas Breitkreuz