Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
Delphi 7 Architect
|
Re: GDI-Zeichnungen entfernen
1. Aug 2003, 09:36
Vielleicht hilft es
Code:
var
hDC: HDC;
hOldFont : HFONT;
cText : array [0..255] of char;
begin
hDC := GetDC(ListViewHandle);
//alte Markierung entfernen
DeselectColumns;
//neuen Eintrag Zeichnen
SetBkColor(hDC, GetSysColor(COLOR_HIGHLIGHT));
SetTextColor(hDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
hOldFont := SelectObject(hDC, FhLVFont); // merke Vorgänder
ListView_GetItemText(ListViewHandle, iItem, iSubItem, cText, 256);
DrawText(hDC, cText, -1, Rect, DT_CENTER or DT_SINGLELINE or DT_VCENTER);
FSelCol.iItem := iItem;
FSelCol.iSubItem := iSubItem;
FSelCol.Selected := True;
// ganz wichtig immer aufräümen
// sonst verliert Windows-Speicher welcher nur durch neustart wieder
// hergestellt werden kann (Vorsicht bei HBITMAP, HFONT, HBRUSH
// größten fresser
SelectObject(hDC, hOldFont);
ReleaseDC(ListViewHandle, hDC);
end
das sollte gehen
Warum bringst du nicht alles in einer Zeichenroutine unter
ungefähr so
Delphi-Quellcode:
if Selected then
begin
SetTextColor( ????
SetBkolor( ????
end
else
begin
SetTextColor( ????
SetBkolor( ????
end;
Zeichen-Funktionen
DeselectItem könnte so aussehen
FSelCol.Select := false
Rect := GetSubItemRect(
InvalidateRect(ListViewHandle, @Rect, true);
SelectItem:
FSelCol.iItem := iItem;
FSelCol.iSubItem := iSubItem;
FSelCol.Selected := True;
Rect := GetSubItemRect(
InvalidateRect(ListViewHandle, @Rect, true);
nur ein Vorschlag, denn so lassen sich Änderungen besser verwalten!
[edit=Luckie]Man kann auch mehr als einen Code-Block verwenden. Mfg, Luckie[/edit]
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
|
|
Zitat
|