AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Button.Image (d.h. Bitmap) wird nicht angezeigt

Ein Thema von Jürgen Thomas · begonnen am 22. Aug 2006 · letzter Beitrag vom 30. Aug 2007
 
Jürgen Thomas

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

Button.Image (d.h. Bitmap) wird nicht angezeigt

  Alt 22. Aug 2006, 17:04
Hallo,
ich vermisse in meiner Anwendung die Bitmaps auf meinen Buttons. Die Bitmaps werden grundsätzlich über eine ImageList zugeordnet.

Variante 1 funktioniert:
Code:
public class DlgDemo : System.Windows.Forms.Form{
private System.ComponentModel.IContainer components;
private System.Windows.Forms.Button btn;
private System.Windows.Forms.ImageList Bitmaps;
//  usw.
//  in InitializeComponents() steht u.a.:
this.btn.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btn.ImageIndex = 11;
this.btn.ImageList = this.Bitmaps;
this.btn.Name = "btn";
this.btn.TabIndex = 5;
this.btn.Text = "&Dialog ausführen";
//  usw. }
Variante 2 a definiert zunächst ein Basisformular zf_Vorlage in einer getrennten Assembly 1 mit Verweis auf eine ImageList in einer Assembly 2:
Code:
public class zf_Vorlage : System.Windows.Forms.Form   {
//  Standardverweise
protected System.Windows.Forms.ImageList gb = null;
//  die ImageList wird im Konstruktor unmittelbar nach InitializeComponents()
//  über eine GetSingleton-Prozedur geholt:
gb = JThomas.Configs.Globale_Instanzen.Get_Bitmap_Liste();
//  usw.
Das eigentliche Formular wird davon abgeleitet. Im Designer (Borland-IDE) kann die Bitmap zugeordnet werden:
Code:
public class zf_Haupteingabe : JThomas.Forms.Vorlage.zf_Vorlage   {
private System.Windows.Forms.Button button1;
//  in InitializeComponents() steht u.a.:
//  gb
this.gb.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("gb.ImageStream")));
//  button1
this.button1.ImageIndex = 1;
this.button1.ImageList = this.gb;
this.button1.Location = new System.Drawing.Point(344, 287);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(23, 23);
this.button1.TabIndex = 44;
//  usw.
Im Designer ist die Bitmap auf diesem Button sichtbar, aber zur Laufzeit nicht! Warum nicht?

Variante 2 b erzeugt weitere Buttons zur Laufzeit (d.h. ohne Designer) wie folgt:
Code:
//  im Konstruktor nach InitializeComponents() z.B.:
CreateButton("button2", "", this.groupHaupt, 1, 345, 287, 23, 23, 32);
//  unter Verwendung der folgenden Methode:
private void CreateButton(System.String sName, System.String sText, Control Parent,
    int iImage,   int iLeft, int iTop, int iWidth, int iHeight, int iTabIndex) {
Parent.SuspendLayout();
System.Windows.Forms.Button ctl = new System.Windows.Forms.Button();
Parent.Controls.Add(ctl);
//
//  Eigenschaften zuordnen
ctl.Location = new System.Drawing.Point(iLeft, iTop);
ctl.Name = sName;
ctl.TextAlign = ContentAlignment.MiddleCenter;
ctl.Size = new System.Drawing.Size(iWidth, iHeight);
ctl.TabIndex = iTabIndex;
//
//  Image zuordnen, sofern vorgesehen
if (iImage >= 0) {
   ctl.ImageIndex = iImage;
   ctl.ImageList = this.gb;
   ctl.Refresh();  }
Parent.ResumeLayout();   }
Dabei ist im Designer natürlich nichts zu sehen. Die Buttons werden zur Laufzeit angezeigt, aber die Bitmaps nicht.

Der Debug-Inspektor sagt zur Laufzeit (im letzten Code-Schnipsel bei der Zuordnung "ctl.ImageList = this.gb;"):
Zitat:
gb: ImageList
imageCollection - null reference
Wie kann gb seine Bilder verloren haben (im Designer sind sie vorhanden!), und wie kann ich sie "zur Laufzeit behalten"?

Wer kann mir Hinweise geben? Danke! Jürgen

PS. Ich wünsche keine Diskussion über die Aufteilung in verschiedene Assemblies, die Konstruktion über ein Basisformular, eine allgemein verwendete Bitmap-Liste u.dgl. Über die Konzeption habe ich mir so viele Gedanken gemacht, dass es dabei bleibt. Basta! Mir geht es darum, wann und wie die Bitmaps sichtbar gemacht werden können; nur insofern sind Änderungen an dieser Konzeption möglich.
#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
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:08 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 by Thomas Breitkreuz