AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls C# ComboBox-Derivat: Toolbox-Bitmap und Button-Bitmap ändern?
Thema durchsuchen
Ansicht
Themen-Optionen

ComboBox-Derivat: Toolbox-Bitmap und Button-Bitmap ändern?

Ein Thema von Jürgen Thomas · begonnen am 13. Jul 2006 · letzter Beitrag vom 17. Jul 2006
Antwort Antwort
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#1

ComboBox-Derivat: Toolbox-Bitmap und Button-Bitmap ändern?

  Alt 13. Jul 2006, 11:57
Hallo,
ich habe von ComboBox eine Komponente uFilenameDlg abgeleitet.
(Inhalt: Der ComboBox wurde ein OpenFileDialog zugeordnet; im Textbereich kann ein Datei- oder Pfadname eingegeben werden; durch das Öffnen der Box oder den Down-Button wird der Dialog aufgerufen.)

Die Komponente selbst funktioniert vollständig zu meiner Zufriedenheit; aber einige "Schönheitsfehler" sollten noch beseitigt werden:

[ToolboxBitmap(typeof(uFilenameDlg), "uFilenameDlg.Bmp")] wird nicht berücksichtigt
Ich habe - wie an verschiedenen Stellen erläutert - dieser Komponente eine eigene Bitmap zugeordnet; diese wird aber nicht in der Komponentenpalette angezeigt, sondern durch das Zahnrad ersetzt. Fehlt noch eine andere Einstellung, oder ist die Borland-IDE schuld?

Bitmap des Down-Button ändern
Ich möchte den "Pfeil abwärts" ersetzen durch die "drei Punkte" zum Durchsuchen o.a. Leider gibt es keine Eigenschaft ButtonStyle. Kann/Sollte ich den Button selbst zeichnen? Durch Layout() oder Paint()? Oder...?

Description der OpenFileDialog-Eigenschaften
Ich habe die Eigenschaften des Dialogs übernommen als Eigenschaften von uFilenameDlg. Die Hilfe-Funktion des PropertyGrid kann ich selbst vorbereiten. Gibt es einen einfachen Weg zum "Kopieren" der Beschreibung, z.B. in dieser Art:
[Description(Dlg.DefaultExt.DescriptionAttribute.De scription)]

Danke für Tipps!
Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#2

Re: ComboBox-Derivat: Toolbox-Bitmap und Button-Bitmap änder

  Alt 16. Jul 2006, 13:16
Hi Jürgen,
schaue mal hier vorbei:
C# - Componente, wo kommt das Icon hin
Du solltest aber wissen, dass die IDE das Icon nur zeigt, wenn du die Componente explizit registrierst. (Ich nehme einfach an, dass du das VS nimmst)
Wenn noch Fragen offen sind, einfach fragen.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#3

Re: ComboBox-Derivat: Toolbox-Bitmap und Button-Bitmap änder

  Alt 16. Jul 2006, 13:55
Zitat von Elvis:
C# - Componente, wo kommt das Icon hin
Du solltest aber wissen, dass die IDE das Icon nur zeigt, wenn du die Componente explizit registrierst. (Ich nehme einfach an, dass du das VS nimmst)
Danke, genau nach diesem Praxis-Hinweis bin ich vorgegangen; aber so klappt es noch nicht.
Was genau meinst Du mit explizit registrierst und VS? VisualStudio - nein, sondern Borland-IDE. Registrierung durch Komponente | Installierte NET-Komponente (ggf. Assembly hinzufügen) zeigt nur das Zahnrad; wenn ich die Komponente in der Assembly prüfe (z.B. durch Reflection), wird mir der richtige Dateiname *.bmp angezeigt.
Wo geht das Bild verloren???
Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#4

Re: ComboBox-Derivat: Toolbox-Bitmap und Button-Bitmap änder

  Alt 16. Jul 2006, 15:44
Du kannst im gleichen Ordner, in dem die Komponente liegt, ein Bild mit dem Namen DeineKomponente.bmp anlegen. Darauf zielt der Kontruktor von TollBoxIconAttribute ab, der nur einen Parameter vom Typen System.Type schluckt. Dieser Datei verpasst du die Build action "embedded resource" (siehe screenie rechts oben, dort ist die Component1.bmp gerade selektiert).
Der Kompiler wird die Datei dann automatisch als Resource in deine Assembly kompilieren, wobei er den Default namespace deiner assembly als Präfix nutzt.
In meinem Beispiel wurde aus "Component1.bmp" "DP.ToolBoxIconSample.Lib.Component1.bmp".

Zitat:
Was genau meinst Du mit explizit registrierst und VS? VisualStudio - nein, sondern Borland-IDE. Registrierung durch Komponente | Installierte NET-Komponente (ggf. Assembly hinzufügen)
Ich meinte das Gegenstück davon im VS, also nicht dass er sie von alleine in die Toolbox holt wenn du das Projekt öffnest. Ich habe mal die gleichen Dateien benutzt, die ich damals in dem anderen Thread benutzt habe. Diesmal habe ich die Komponenten aber nicht explizit registriert sondern sie autom. von der IDE in die Toolbox ziehen lassen. Wie du im Screenie siehst hat man dann dort keine Icons, im Designer aber schon.
Zitat:
zeigt nur das Zahnrad; wenn ich die Komponente in der Assembly prüfe (z.B. durch Reflection), wird mir der richtige Dateiname *.bmp angezeigt.
Schaue mal mit dem Reflector (nicht mit dem Viech, das im BDS mitgeliefert wird) wie die Resource des Bildes heißt. Vllt kannst du einen Screenie davon anhängen? (Ich habe den von meiner Lib mal hier ebenfalls angehängt, das Gegenstück dazu wäre dann von dir notwendig um dir weiterhelfen zu können)
Miniaturansicht angehängter Grafiken
dp.toolboxiconsample.ide_screenie_609.png   dp.toolboxiconsample.reflector_screenie_201.png  
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#5

Re: ComboBox-Derivat: Toolbox-Bitmap und Button-Bitmap änder

  Alt 17. Jul 2006, 12:55
Zitat von Elvis:
Du kannst im gleichen Ordner, in dem die Komponente liegt, ein Bild mit dem Namen DeineKomponente.bmp anlegen. Darauf zielt der Kontruktor von TollBoxIconAttribute ab, der nur einen Parameter vom Typen System.Type schluckt. Dieser Datei verpasst du die Build action "embedded resource" (siehe screenie rechts oben, dort ist die Component1.bmp gerade selektiert).
Der Kompiler wird die Datei dann automatisch als Resource in deine Assembly kompilieren, wobei er den Default namespace deiner assembly als Präfix nutzt.
Ich habe beide Varianten versucht - ohne Unterschied:
Code:
[ToolboxBitmap(typeof(uFilenameDlg))] //  oder:
[ToolboxBitmap(typeof(uFilenameDlg), "uFilenameDlg.Bmp")]
Könnte es sein, dass Borland-IDE und Compiler die unterschiedlichen Ergebnisse verursachen? Ich bilde mir ein, dass ich die Borland-IDE kenne; aber ich finde nichts, wie ich eine Bmp-Ressource gezielt einbinde und mit Build action "embedded resource" verknüpfen könnte.

Zitat von Elvis:
Schaue mal mit dem Reflector (nicht mit dem Viech, das im BDS mitgeliefert wird) wie die Resource des Bildes heißt...
Den Screen kann ich mir sparen; Roeder-Reflector zeigt, dass die Bmp tatsächlich nicht richtig eingebunden wurde, sondern dem Standard-Namespace zugeordnet wurde:
Zitat:
Standard-Namespace der Assembly lautet: JThomas.Forms
Der Namespace der Komponente lautet: JThomas.Forms.Controls
Ich habe jetzt die Bitmap umbenannt in Controls.uFilenameDlg.Bmp; jetzt wird sie mit dem richtigen Namespace angezeigt. Aber in der Komponentenpalette steht weiterhin das Zahnrad.

Vielleicht verzichten wir doch auf weitere Versuche. Es handelt sich in diesem Fall ja nur um einen Schönheitsfehler; und wir können alles auf Borland schieben...

Trotzdem danke für die Tipps! Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  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 01:28 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