Autor Beitrag
mtm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64

Windows 10 Pro 64 Bit
Delphi XE 6
BeitragVerfasst: Mi 29.10.14 22:56 
Hallo zusammen,

ich bin gerade dabei ein Drive-Combobox zu schreiben. Im Prinzip kein Problem, es werden auch alle gewünschten Laufwerke angezeigt, wenn ich den DropDown mache (Anhang 1). Wenn ich dann aus der Liste jedoch einen Wert auswähle, wird der nicht angezeigt, sondern das ganze Feld ist blau (Anhang 2).
Vielleicht hat jemand von Euch sowas schon mal gehabt.

Der DrawItem-Teil sieht übrigens so aus.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
procedure TDrvCombo.DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
  ico: TIcon;
  txt,dr: String;
  fi: SHFILEINFO;
  vi: VolInfo;
  py: Integer;
begin
  vi := VolInfo(Self.Items.Objects[Index]); // in Items sind die Laufwerke mit ihren Infos(in den Objects) enthalten.
  dr := vi.Drive + ':\';
  SHGetFileInfo(PWideChar(dr), 0, fi, SizeOf(fi), SHGFI_ICON or SHGFI_SMALLICON);  // hole das SystemIcon für das Laufwerk
  ico := TIcon.Create;
  ico.Handle := fi.hIcon;
  py := Index * ItemHeight;
  with Self.Canvas do begin
    FillRect(Rect);
    Draw(1,py,ico); // Zeichne Icon
    txt := '[' + vi.Drive + '] - ' + vi.Namen;
    TextOut(20,py,txt);  // Ausgabe Text
  end;
  ico.Free;
end;


Habe gerade gemerkt, dass es bei der Auswahl des ersten Elements etwas anders aussieht(Anhang 3).
Einloggen, um Attachments anzusehen!
Stundenplan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128
Erhaltene Danke: 32

Win 7
Delphi 7 Pers., C# (VS 2010 Express)
BeitragVerfasst: Do 30.10.14 10:22 
In der DrawItem-Methode bekommst du ja einen Rect-Parameter. Wenn du einfach das übergebene Rect verwendest anstatt es dir vom Index auszurechnen, sollte es funktionieren. Denn wenn du z.B. das 3. Element auswählst, ist Index = 4, aber es muss trotzdem bei 0,0 o.ä. gezeichnet werden, da die aktuelle Auswahl ja ganz "oben links" steht.
mtm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64

Windows 10 Pro 64 Bit
Delphi XE 6
BeitragVerfasst: Do 30.10.14 12:50 
Danke Dir.

Manchmal hat man auch wirklich Tomaten auf den Augen und im Hirn.