Results 1 to 13 of 13

Thread: caption in listview een ander kleurtje geven

  1. #1
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747

    caption in listview een ander kleurtje geven

    Ik kan het even niet vinden om een caption in een tlistitem een ander kleur te geven. Ik gebruik deze code:
    Code:
    procedure TForm2.GetRPTFiles(const folder : string);
    var List : TListItem;
        SFile : string;
    begin
      Lijstvarianten.First;
      while not lijstvarianten.eof do
      begin
        List := Listview1.Items.Add;
        List.Caption := lijstvarianten.FieldByName('lijstnaam').AsString;
        SFile := StrBasisPad + '\' + folder + '\' + List.Caption;
        if not fileExists(SFile) then
          --> hiet zou de kleur van de caption moeten veranderen
        lijstvarianten.Next;
      end;
    end;
    Als het bestand niet bestaat, zal deze moeten worden aangegeven in bijvoorbeeld rood. Ik heb de properties en methods doorgenomen, maar kan het niet vinden.
    Het is geen must, maar een mooie optie als dit zou kunnen.
    Mocht het niet lukken, probeer ik gewoon een andere manier.
    Delphi is great. Lazarus is more powerfull

  2. #2
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    Kan dat niet in één van de OnCustomDrawEvents?
    All methodologies are based on fear. -- Kent Beck.

  3. #3
    DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden

  4. #4
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Henkie, de topic man, weet echt alles te vinden. Ik ga maandag kijken of ik het werkend krijg.
    Delphi is great. Lazarus is more powerfull

  5. #5
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Ik heb het anders opgelost. In die andere topic wordt dan alle captions van kleur veranderd en dat wilde ik juist niet. Ik heb het opgelost door een sterretje achter de caption te zetten, zodra dat bestand is gevonden.
    Maar ik heb iets anders wat wel met de Tlistview te maken heeft.
    Op de afbeelding hieronder zie je een aantal bestanden staan. De laatste is niet in zijn geheel zichtbaar. Nu heb ik op het hele internet (en er warm van gekregen) gezocht hoe dat aangpast moest worden, maar kan het niet vinden. Waarschijnlijk is het iets kleins, maar welke property is het dan?
    Ik dacht eerst dat het in de Tlistcolumns stond, maar dat mocht niet baten. Logish ook, want mijn tlistview.viewstyle staat op vsList. Het moet volgens mij wel kunnen, want windows doet niets anders.
    Attached Images Attached Images  
    Delphi is great. Lazarus is more powerfull

  6. #6
    Is dat een normale TListview met enkele Items toegevoegd of heb je code om te tekst te tekenen?
    DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden

  7. #7
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Normale TListview met items toegevoegd via een tabel. Dus geen rare fratsen.
    Delphi is great. Lazarus is more powerfull

  8. #8
    Senior Member
    Join Date
    Aug 2008
    Location
    Randstad
    Posts
    184
    Quote Originally Posted by jkuiper View Post
    Ik heb het anders opgelost. In die andere topic wordt dan alle captions van kleur veranderd en dat wilde ik juist niet. Ik heb het opgelost door een sterretje achter de caption te zetten, zodra dat bestand is gevonden.
    Maar ik heb iets anders wat wel met de Tlistview te maken heeft.
    Op de afbeelding hieronder zie je een aantal bestanden staan. De laatste is niet in zijn geheel zichtbaar. Nu heb ik op het hele internet (en er warm van gekregen) gezocht hoe dat aangpast moest worden, maar kan het niet vinden. Waarschijnlijk is het iets kleins, maar welke property is het dan?
    Ik dacht eerst dat het in de Tlistcolumns stond, maar dat mocht niet baten. Logish ook, want mijn tlistview.viewstyle staat op vsList. Het moet volgens mij wel kunnen, want windows doet niets anders.
    Is het niet de breedte van de column? TListview.columns[0].width?

    -edit- Bizar: In designtime lijkt het nog steeds niet goed, maar in runtime laat ie hem wel goed zien. Kijk ook eens naar de TListview.colums[0].autosize - property, helpt misschien ook
    Last edited by avlan; 12-Aug-08 at 13:57.

  9. #9
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Dat dacht ik dus eerst ook, maar alleen vsReport maakt gebruik van TListColumns
    Delphi is great. Lazarus is more powerfull

  10. #10
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Eigenwijs dat ik ben, heb ik toch naar het voorbeeldje van bobo en even verder gezocht op het internet.
    Dit is het resultaat
    Code:
    procedure TForm2.GetRPTFiles(const folder : string);
    var List : TListItem;
        SFile : string;
    begin
      Lijst.First;
      while not lijst.eof do
      begin
        List := Listview1.Items.Add;
        List.Caption := lijst.FieldByName('lijstnaam').AsString;
        SFile := StrBasisPad + '\' + folder + '\' + lijst.FieldByName('lijstnaam').AsString;
        if fileExists(SFile) then
          list.SubItems.Add('wel')
        else
          list.SubItems.Add('niet');
        lijst.Next;
      end;
    end;
    
    procedure TForm2.ListView1CustomDrawItem(Sender: TCustomListView;
      Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
    begin
    with ListView1.Canvas.Font do
      begin
        if Item.SubItems.IndexOf('wel') = 0 then
          Color := clBlack
        else
          Color := clRed;
      end;
    end;
    Om geen extra locale variabelen aan te maken in de formulier, heb ik kgekozen voor subitems.

    Nu nog zoeken naar het breedte bepalen van de caption, zonder dat even afkapt.
    Delphi is great. Lazarus is more powerfull

  11. #11
    Senior Member
    Join Date
    Aug 2008
    Location
    Randstad
    Posts
    184
    Quote Originally Posted by jkuiper View Post
    Dat dacht ik dus eerst ook, maar alleen vsReport maakt gebruik van TListColumns
    toch had ik verschil als ik de width veranderde van 50 naar 200...

  12. #12
    Nu voeg je de tekst toe aan de items maar je hoeft dat niet op die manier te doen, je kan daarvoor ook de Data property gebruiken. Lijkt me iets netter.
    DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden

  13. #13
    En als je de items verder niet sorteert kun je ook controleren of de itemIndex van het huidige item even of oneven is (if ((Listview1.Items.count mod 2) = 0) then ... )

    [edit]
    zie alleen nog wel dat je dan in je customDraw nog wat moet goochlen om de juiste index naar voren te krijgen
    [/edit]

    [edit]
    Zucht. lezen is een vak apart.
    Je bent helemaal niet op zoek naar om en om kleuren van regels...
    [/edit]
    Last edited by Demandred; 14-Aug-08 at 17:25.
    I don't byte, I just nibble a bit.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •