AGB  ·  Datenschutz  ·  Impressum  







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

Item in DrawItem ändern?

Ein Thema von Mattze · begonnen am 21. Jun 2014 · letzter Beitrag vom 23. Jun 2014
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Item in DrawItem ändern?

  Alt 21. Jun 2014, 09:50
Hallo Marcus,

tolle Antwort.
Mir ist durchaus klar, dass man das mit dem Passwort anders regelt.
Aber schließlich wolltest Du ein Bsp. dafür, wozu man das verwenden KÖNNTE.

Das eigentliche Problem ist das OnBeforeItemDraw, das am Anfang von ItemDraw aufgerufen werden soll - wie gesagt.
Da kann man alles machen, nur nicht den Inhalt von Items[index] verändern. Deshalb die Frage.

Gruß
Mattze
Ähm nochmal, warum willst du die Daten verändern, wenn du nur die Anzeige verändern willst?

So gesehen kann in den Items stehen was will und du kannst auch beim Zeichen zeichnen was du willst. Darum versteht hier niemand, aus welchem Grund du bei der Anzeige die Daten verändern möchtest.

Es macht einfach keinen - absolut keinen - Sinn
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#2

AW: Item in DrawItem ändern?

  Alt 21. Jun 2014, 10:15
Hallo,

1. Die Frage ist nicht warum, sondern ob es überhaupt geht. Ich will es ja gar nicht machen! Es wäre halt interessant für mich. Aus rein logischen Gründen würde ich sagen, dass das gar nicht gehen kann.
2. Ich möchte gerne vermeiden, dass ich das in einigen Jahren versuche, weil ich mich nicht mehr daran erinnert habe, dass es nicht gehen kann. Und dann eine aufwendige (und sinnlose) Fehlersuche starte...

Mehr steckt da im Grunde nicht dahinter. Es ist für mich immer bloß sehr interessant, Grenzen zu finden (oder zu sehen). Manchmal kann man die dann auch gut verallgemeinern und fällt beim nächsten Mal nicht wieder auf solche "Dummheit" rein.

Gruß
Mattze
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Item in DrawItem ändern?

  Alt 21. Jun 2014, 12:20
Sollte nicht gehen:
Delphi-Quellcode:
procedure GetFiles(Path: String; List: TStrings);
var
  Search: TSearchRec;
begin
  //Path := IncludeTrailingBackslash(Path);
  if FindFirst(Path + '*.*', faAnyFile, Search) = 0 then
  repeat
    List.Add(Path + Search.Name);
  until FindNext(Search) <> 0;
  FindClose(Search);
end;

procedure TForm1.FormCreate(Sender: TObject);
const
  Path = 'c:\';
begin
  ListBox1.Style := lbOwnerDrawFixed;
  ListBox1.Sorted := True;
  GetFiles(Path, ListBox1.Items);
end;

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
const
  PfadeVerstecken = True; //<<<<
var
  FileName: String;
begin
  with (Control as TListbox) do
  begin
    if PfadeVerstecken then
      FileName := ExtractFileName(Items[Index])
    else
      FileName := Items[Index];

    Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top, FileName);

    //Items[Index] := '[Mattze] ' + FileName; //Endlos, wg. Aktualisierung
  end;
end;
ListBox1DrawItem reagiert auf Änderung, dann gibt es eine Änderung im Item, also ruft sich ListBox1DrawItem wieder auf, dann gibt es eine Änderung im Item, usw.

Den Inhalt ändern, der gezeichnet werden soll, ist ja kein Problem (siehe Beispiel).
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#4

AW: Item in DrawItem ändern?

  Alt 21. Jun 2014, 12:35
Hallo Popov,

genau wegen des dann eintretenden "Endlosaufrufs" von DrawItem meinte ich, dass das logischerweise nicht gehen kann.
Der Hintergrund ist, dass die Listbox automatisch bei einer Änderung des Inhaltes den entsprechenden Item neu zeichnet.
Also, sobald items[index]:='irgendwas' gemacht wird, schreibt sie die Änderung und das soll sie ja auch.

Wie gesagt, etwas anderes als den Itemtext auszugeben ist kein Problem. Mache ich ja in meiner Listview ständig.
Es wäre eben nur interessant, ob man das irgendwie hinbiegen kann.

Gruß
Mattze

PS: Richtig, Sir Rufo! Aber fragen kann man ja mal...
So wurden schon viele Sachen geklärt und oft weiß man selber gar nicht, was man eigentlich wirklich will.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Item in DrawItem ändern?

  Alt 21. Jun 2014, 12:40
.onItemDraw() ist nun mal für das Zeichnen von Einträgen (Darstellung) zuständig. Hier sollte man nichts an den Daten ändern.
Wenn Dir das Radio/Fernseher zu laut/leise ist regelst Du ja auch die Lautstärke über den Regler oder der Fernsteuerung und rufst nicht beim Sender an und verlangst, dass Sie die daten ändern sollen (Film/Musik).
Markus Kinzler
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#6

AW: Item in DrawItem ändern?

  Alt 21. Jun 2014, 14:29
Hallo,

tschja, so ist das eben. Vieles ist für vieles zuständig und manches sogar für mehr als man denkt und vermuten würde.

Die Möglichkeiten muss man halt ausloten.

Gruß
Mattze
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Item in DrawItem ändern?

  Alt 21. Jun 2014, 14:36
Natürlich kann man auch mit einem Teelöffel eine Tunnel durch die Alpen graben.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Item in DrawItem ändern?

  Alt 21. Jun 2014, 12:26
Hallo,

1. Die Frage ist nicht warum, sondern ob es überhaupt geht. Ich will es ja gar nicht machen! Es wäre halt interessant für mich. Aus rein logischen Gründen würde ich sagen, dass das gar nicht gehen kann.
2. Ich möchte gerne vermeiden, dass ich das in einigen Jahren versuche, weil ich mich nicht mehr daran erinnert habe, dass es nicht gehen kann. Und dann eine aufwendige (und sinnlose) Fehlersuche starte...

Mehr steckt da im Grunde nicht dahinter. Es ist für mich immer bloß sehr interessant, Grenzen zu finden (oder zu sehen). Manchmal kann man die dann auch gut verallgemeinern und fällt beim nächsten Mal nicht wieder auf solche "Dummheit" rein.

Gruß
Mattze
Denk einfach daran, dass dein Füller/Kugelschreiber auch nicht mit dir diskutiert, was du gerade im Kopf/Sinn hast
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:27 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-2025 by Thomas Breitkreuz