AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Listbox Eintrag fett machen

Ein Thema von BenniP · begonnen am 4. Aug 2005 · letzter Beitrag vom 5. Jun 2008
Antwort Antwort
Seite 1 von 3  1 23      
BenniP

Registriert seit: 27. Nov 2004
50 Beiträge
 
Delphi 2007 Professional
 
#1

Listbox Eintrag fett machen

  Alt 4. Aug 2005, 17:29
Hallo,

ich habe eine ListBox und in dieser würde ich gerne unterschiedliche Einträge fett machen.
Also z.b. mal den ersten, dann mal den 2. und den 6. Eintrag.

Das mit den Fett machen in der OnDraw-Procedure hab ich gemacht, ob ichs verstanden hab ist etwas anderes

Mein Problem ist das ich nicht weiß, wie ich es abfragen kann das er z.b. den 1. und 2. Index normal läßt und den 3. Fett macht und den 4. wieder normal läßt.
Die Test wo ich gemacht hab, hat er immer alle Einträge Fett gemacht.

Könnte mir da jemand auf die Sprünge helfen?

Besten Dank
BenniP
  Mit Zitat antworten Zitat
100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#2

Re: Listbox Eintrag fett machen

  Alt 4. Aug 2005, 17:32
hi,

Zitat:
Die Test wo ich gemacht hab, hat er immer alle Einträge Fett gemacht.
könntest du vielleicht den code posten, bei dem das passierte? dann wäre es vielleicht möglich diesen abzuändern

gruss
urbanbruhin
  Mit Zitat antworten Zitat
CLRS530

Registriert seit: 27. Jun 2005
Ort: Hamburg
39 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Listbox Eintrag fett machen

  Alt 4. Aug 2005, 17:34
Du bekommst doch bei der prozedur index übergeben, so musst du einfach nur prüfen oder dieser 4 oder 6 ist oder sonstwas und dann deine methode ausführen.

EDIT:
Hier der Code

Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  If (Index = 4) or (Index = 6) then
    //Hier die Methode zum fett zeichnen
end;
  Mit Zitat antworten Zitat
BenniP

Registriert seit: 27. Nov 2004
50 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Listbox Eintrag fett machen

  Alt 4. Aug 2005, 18:03
@urbanbruhin:
Oh ja, Verzeihung:

Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
   listbox1.canvas.FillRect(rect);
   Listbox1.canvas.Font.Style:= [fsbold];
   Listbox1.canvas.TextOut(Rect.Left+2, Rect.Top, listbox1.Items[index]);
end;
@CLRS530:
Werd ich gleich probieren.
  Mit Zitat antworten Zitat
100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#5

Re: Listbox Eintrag fett machen

  Alt 4. Aug 2005, 18:16
Zitat von BenniP:
@urbanbruhin:
Oh ja, Verzeihung:

Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
   listbox1.canvas.FillRect(rect);
   Listbox1.canvas.Font.Style:= [fsbold];
   Listbox1.canvas.TextOut(Rect.Left+2, Rect.Top, listbox1.Items[index]); // Hier ist ja der Index
end;
@CLRS530:
Werd ich gleich probieren.
Ich denke, es müsste schon so gehen wie es CLRS530 beschrieben hat.
  Mit Zitat antworten Zitat
BenniP

Registriert seit: 27. Nov 2004
50 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Listbox Eintrag fett machen

  Alt 4. Aug 2005, 18:21
Geht auch! Dankeschön für die schnelle und hilfreiche Antwort!

Nur noch eine abschließende Frage, kann ich in dieser OnDraw-Procdure auch for-Schleifen ausführen?
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#7

Re: Listbox Eintrag fett machen

  Alt 4. Aug 2005, 18:23
klar, du kannst da alles ausführen was du willst.

die schleife wird dann halt jedesmal bei einem ondraw-event aufgerufen.
  Mit Zitat antworten Zitat
BenniP

Registriert seit: 27. Nov 2004
50 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Listbox Eintrag fett machen

  Alt 4. Aug 2005, 18:44
Ok, jetzt hab ich mal meine OnDraw-Procdure erweitert.

In Listbox2 stehen die Einträge [0, 2, 5] drin.
Die versuche ich mit einer For-Schleife auszulesen und dann mit dem Index zu vergleichen.

Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var i, i2, iihnhalt: integer;
begin
 with (Control as TListBox).Canvas do
 begin
  for i:= 0 to listbox2.Count-1 do
  begin
   iihnhalt:= strtoint(listbox2.Items[i]);
   If Index = iihnhalt then
   begin
    FillRect(rect);
    Font.Style:= [fsbold];
    TextOut(Rect.Left+2, Rect.Top, listbox1.Items[index]);
   end
   else
   begin
    FillRect(rect);
    Font.Style:= [];
    TextOut(Rect.Left+2, Rect.Top, listbox1.Items[index]);
   end;
  end; //DO
 end; //with
end;
Allerdings, markiert er mir nur den fünften Eintrag, also den letzten der Listbbox, fett. Alle anderen sind normal.
  Mit Zitat antworten Zitat
CLRS530

Registriert seit: 27. Jun 2005
Ort: Hamburg
39 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Listbox Eintrag fett machen

  Alt 4. Aug 2005, 19:13
Das macht absolut kein Sinn wie du es machst.
OnDraw ist eine Prozedur die so lange aufgerufen wird, wie Elemente in der Listbox sind.
Es geht also alle durch.

Versuch es mal folgendermaßen:

Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
                                  Rect: TRect; State: TOwnerDrawState);
var iihnhalt: integer;
begin
  with (Control as TListBox).Canvas do
  begin
    FillRect(rect);
    iihnhalt:= strtoint(listbox2.Items[Index]);
    If Index = iihnhalt then
      Font.Style:= [fsbold]
    else
      Font.Style:= [];
    TextOut(Rect.Left+2, Rect.Top, listbox1.Items[index]);
  end; //with
end;
EDIT : Habs getestet, das funzt so
Ist doch auch gleich viel angenehmer der Code oder?
  Mit Zitat antworten Zitat
BenniP

Registriert seit: 27. Nov 2004
50 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Listbox Eintrag fett machen

  Alt 4. Aug 2005, 19:27
Ok ich werds mal testen. Danke schon mal im Vorraus

Edit: Ok, aber es funktioniert nur wenn die Anzahl der Listbox2 Einträge mit dem der Listbox1 übereinstimmt. Denn der Index geht ja von 0 bis zum Ende der Listbox1.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 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