Autor Beitrag
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 05.11.04 19:48 
Moin!

Ich hab da ein Problem mit TTreeNode.OverlayIndex. Kurze Beschreibung der Umgebung:
- ImageList angelegt, enthält 9 Bitmaps (0-8)
- TreeView angelegt
- Node erzeugt
- ImageIndex zugewiesen > fluppt!
- OverlayIndex zugewiesen > fluppt nicht!?
Symptom: Weise ich OverlayIndex Werte zwischen 0 und 3 zu, wird einfach nur das ImageIndex-Bitmap angezeigt, Werte >=4 blenden das 0te Bitmap über... ?!
In der Hilfe steht da aber was anderes, nämlich, dass man mit OverlayIndex das angegebene Bild transparent auf das ImageIndex-Bitmap blendet. Tut aber nicht...

Also, entweder ich habe das alles noch nicht verstanden, mache was falsch oder die Komponente funktioniert anders, als erwartet bzw. da ist ein Bug drin. Das mit dem Bug ist mir irgendwie nicht wirklich glaubhaft, das hätten auch schon andere gemerkt und wäre bereinigt worden - Fazit: ich mache was falsch. Aber was?

Hat da einer ´ne Idee?

cu
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Sa 06.11.04 12:14 
Hi!

Könnte mir denn wenigstens jemand bestätigen, dass es dort auch komisches Verhalten gibt? Ich habe gestern, ähm heute früh :? , ein neues Testprojekt nur mit den angegebenen Komponenten angelegt, selbes Ergebnis. Sogar der Sprungpunkt beim Index 3/4 ist vorhanden... Ich hab auch sonst schon bischen im Web gesucht, aber nix dazu finden können.

Nunja, der "workaround" ist natürlich, auf OverlayIndex zu verzichten und die Menge der Bitmaps zu vervielfachen, je nach bereits vorgefertigt überblendetem Image angepasst. Wenn man die Indices dann "geschickt" anordnet, kann man auf Bitebene das "richtige" Image auswählen. Jaaaa, aber das ist eben gemogelt... :wink:

Wozu gibt es diese doofe Eigenschaft, wenn sie nicht (richtig?) funktioniert?!?!?

cu
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 07.11.04 19:56 
Moin!

Ähm, mache ich hier irgendwas falsch? Sollte ich mich daneben benehmen, bitte ich um Aufklärung und entschuldige mich schonmal präventiv.

Ansonsten: Interessiert das hier einfach keinen oder darf ich auf die gleiche Ratlosigkeit schließen... ?!

cu
Narses
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 09.11.04 23:23 
Hi!

Schade eingentlich, findet sich wohl keiner, der das mal eben bei sich testen kann/will/möchte... :cry:
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Di 09.11.04 23:47 
Du kannst vier Overlay Bilder anlegen. Beginnend mit 0. Mit der Funktion Overlay von TImageList kannst du deine Overlay Bilder anlegen.

_________________
Ciao, Sprint.
omoroca
Hält's aus hier
Beiträge: 1



BeitragVerfasst: So 21.11.04 16:21 
Hi Narses!

Also ich hab ein ähnliches Problem, oder sogar das gleiche und Dich nur nicht richtig verstanden. ;-)

Mein Quellcode:
bitmap := TBitmap.Create();
bitmap.LoadFromResourceName(HInstance, 'GRAY');
nIndex := Self.ctv.Images.Add(bitmap, nil);
bitmap.Free();
ctv.Images.Overlay(nIndex, 0);
ctv.Items[1].OverlayIndex := 0;

Ich sehe den TreeNode nicht mit seinem (weiter oben zugewiesenen) Icon und dem hier spezifizierten Overlay-Bild oben drüber, sondern ich sehe NUR das Overlay-Bild. Damit es sich transparent drüber legen kann, so wie es in der Hilfe steht, muss es doch transparente Pixel geben. Gibt es in nem Graustufen-BMP doch aber gar nicht.

Kann dazu jemand was sagen? Bin für alles dankbar!
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 26.11.04 16:59 
Hi!

Zitat:
Also ich hab ein ähnliches Problem, oder sogar das gleiche

Hm, ich glaube nicht, aber mal sehen.

Zitat:
Mein Quellcode:

Leider komme ich mit deinem Code nicht ganz klar. :gruebel:

Egal, ich stelle mal einfach meine "Erkenntnisse" dar, die sich durch die Antwort von Sprint (Danke nochmal; manchmal ist man einfach zu doof, um die Hilfe *RICHTIG* zu benutzen... :lol: ) ergeben haben:

Beispielprojekt:
- neu anlegen, TreeView, ImageList und Button erstellen
- min. 2 Bilder in die ImageList einfügen (optimalerweise sollte das 2. Bild nicht formatfüllend sein!)
- die ImageList als Images-Eigenschaft des TreeView festlegen
- min. einen Node im TreeView anlegen (nur Text eintragen, Rest auf Vorgabe belassen)
Hier der Code dazu:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.FormCreate(Sender: TObject);
begin
  if (NOT ImageList1.Overlay(1,0)) then
    ShowMessage('Kann Overlay nicht erzeugen!?');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if (Assigned(TreeView1.Selected)) then
    if (TreeView1.Selected.OverlayIndex = -1) then
      TreeView1.Selected.OverlayIndex := 0
    else
      TreeView1.Selected.OverlayIndex := -1;
end;


Erläuterung dazu: Im OnCreate-Handler wird dem 2. Bild in der ImageList (Index 1) der OverlayIndex "0" zugewiesen oder eine Fehlermeldung erzeugt (siehe Hilfe). Bei jedem Klick auf den Button wird nun der OverlayIndex des markierten Nodes zwischen -1 und 0 hin und her geschaltet, worauf sich das Overlay über das Bild des Nodes legt bzw. wieder entfernt.

Generelle Einschränkung beachten: max. 4 Overlays pro ImageList!

Zitat:
Damit es sich transparent drüber legen kann, so wie es in der Hilfe steht, muss es doch transparente Pixel geben. Gibt es in nem Graustufen-BMP doch aber gar nicht.

Ja, stimmt, ein Graustufen (oder auch Paletten-)Bild hat natürlich eigentlich keine transparenten Pixel. Deshalb behilft man sich da mit einer "Farbe", die als "transparent" erklärt wird. Guck mal in die Eigenschaften eines Images, da gibt es TransparentColor und sowas, übrigens natürlich auch bei der ImageList.

Ich hoffe, ich konnte helfen oder doch zumindest aufklären.

cu
Narses

Für diesen Beitrag haben gedankt: Martok