Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Hilfe bei TLMDGraphicList und Imageausgabe...... (https://www.delphipraxis.net/106961-hilfe-bei-tlmdgraphiclist-und-imageausgabe.html)

ApoCalyps0 19. Jan 2008 21:54


Hilfe bei TLMDGraphicList und Imageausgabe......
 
Hi, bin neu hier im Forum und habe mich zu meiner Frage schon quer durch die Suchfunktion gewurschtelt, allerdings ohne gewünschten Erfolg! :pale:

Nun hoffe ich, dass einer von euch mir weiter helfen kann.

Ich "versuche" gerade ein Programm für Sammler zu proggen, indem in einer Combobox die verschiedenen Artikel aufgerufen werden können. Wenn ich nun in dieser Combobox einen Artikel auswähle, soll ein Image des Artikels angezeigt werden.

Die Bilder die ich anzeigen lassen will sind im *.JPG Format. Aus diesem Grund habe ich mich für eine TLMDGraphicList Komponente entschieden.


Nochmals kurz: Combobox zum auswählen, soll aus einer TLMDGraphicList das Bild (JPG), in einem Image od. LMDLImage anzeigen...

Bitte um Anregungen zu diesem Problem.

Christian Seehase 19. Jan 2008 22:14

Re: Hilfe bei TLMDGraphicList und Imageausgabe......
 
Moin ApoCalyps0,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Also ich kenne jetzt die TLMDGraphicList nicht, denke aber mal, dass man dort die einzelnen Graphiken per Index ansprechen kann.
Diesen Index kannst Du in der ComboBox gleich zu jedem Eintrag mitspeichern, indem Du die Items per AddObject hinzfügst, wobei das "Object" einfach nur der Index der zugehörigen Graphic ist.

Delphi-Quellcode:
ComboBox1.Items.AddObject('Der anzuzeigende Text',TObject(iIndexInDerGraphicList));
Auslesen geht dann mit:

Delphi-Quellcode:
iIndexInDerGraphicList := integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);

Nur damit sich ggf. niemand wundert, oder nach einem Fehler sucht (auch wenn es Dich jetzt nicht betrifft):
Die Zeilen in TMemo und TRichEdit sind zwar auch von TStrings abgeleitet, und man kann, ohne Fehler, jeder Zeile etwas per AddObject zuweisen, aber es wird in diesen beiden Fällen nichts dort gespeichert, und man erhält als Wert für ein Objekt immer 0 zurück.
Ansonsten sollte die Verwendung von AddObject bei allen von TStrings abgeleiteten Klassen funktionieren.

ApoCalyps0 19. Jan 2008 23:12

Re: Hilfe bei TLMDGraphicList und Imageausgabe......
 
Hi,

danke für die schnelle hilfe. Hab versucht es einzubinden, funzt aber nicht........
Ich hab hier mal einen Teil meines Quelltextes.....

Delphi-Quellcode:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, jpeg, ExtCtrls, ImgList, LMDBaseControl,
  LMDBaseGraphicControl, LMDGraphicControl, LMDBaseImage, LMDCustomLImage,
  LMDLImage, LMDCustomImageList, LMDGraphicList, LMDThemedComboBox,
  LMDCustomComboBox, LMDComboBox, LMDControl, LMDCustomControl, LMDCustomPanel,
  LMDButtonControl, LMDCustomCheckBox, LMDCheckBox, LMDCustomListBox,
  LMDCustomImageListBox, LMDImageListBox, LMDFill;


type
  TForm3 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    combobox1: TComboBox;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    CheckBox6: TCheckBox;
    CheckBox7: TCheckBox;
    CheckBox8: TCheckBox;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Image7: TImage;
    Image8: TImage;
    Label1: TLabel;
    LMDGraphicList1: TLMDGraphicList;
    LMDLImage1: TLMDLImage;
    procedure combobox1Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

  Uses Unit2, Unit1;

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
begin
    Form3.close;
    Form2.Visible:=true;
end;

procedure TForm3.Button2Click(Sender: TObject);
begin
  Form2.close;
  Form1.close;
  close;
end;

procedure TForm3.combobox1Change (Sender: TObject);
begin
  If ComboBox1.Text = 'Great Beast' Then
 begin
   LMDGraphicList1.Graphics[0];   <-------- Hier soll das erste Bild aus der GraphicList1 geladen werden, und....
   LMDLImage1.Visible:=true;      <-------- hier in LMDLImage1 ausgegeben werden.
   CheckBox1.Checked:=true;
   CheckBox2.Checked:=false;
   CheckBox3.Checked:=false;
   CheckBox4.Checked:=true;
   CheckBox5.Checked:=true;
   CheckBox6.Checked:=false;
   CheckBox7.Checked:=false;
   CheckBox8.Checked:=true;
  end;
  If ComboBox1.Text = 'Hydra' Then
  LMDLImage1:=nil;                <-------- Hier soll das erste Bild gelöscht werden, bzw. von LMDLImage1 entfernt.
  begin
   LMDGraphicList1.Graphics[2];   <-------- Hier soll das zweite Bild aus graphicList1 ins LMDLImage1 hereingeladen werden
   LMDLImage1.Visible:=true;      <-------- Machts aber nicht!!!! 
   CheckBox1.checked:=true;
   CheckBox2.Checked:=false;
   CheckBox3.Checked:=false;
   checkBox4.Checked:=true;
   CheckBox5.Checked:=true;
   CheckBox6.Checked:=false;
   CheckBox7.Checked:=false;
   CheckBox8.Checked:=true;
  end;
  If ComboBox1.Text = 'Werewolf' Then
  begin
   CheckBox1.checked:=true;
   CheckBox2.Checked:=true;
   CheckBox3.Checked:=false;
   CheckBox4.Checked:=false;
   CheckBox5.Checked:=true;
   CheckBox6.Checked:=true;
   CheckBox7.Checked:=false;
   CheckBox8.Checked:=false;
  end;
   If ComboBox1.Text = 'Behemoth' Then
  begin
   CheckBox1.checked:=false;
   CheckBox2.Checked:=true;
   CheckBox3.Checked:=false;
   CheckBox4.Checked:=true;
   CheckBox5.Checked:=false;
   CheckBox6.Checked:=true;
   CheckBox7.Checked:=false;
   CheckBox8.Checked:=true;
Allerdings funzt es halt nicht...????

DeddyH 19. Jan 2008 23:27

Re: Hilfe bei TLMDGraphicList und Imageausgabe......
 
Hallo,

sry, aber das sieht ein bisschen wirr aus :angel:
Zitat:

Delphi-Quellcode:
LMDGraphicList1.Graphics[0];

Was soll denn hier passieren? Ich denke, Du willst die gespeicherte Grafik irgendwo anzeigen, hier fehlt aber die Zuweisung komplett. Ich habe die LMD-Kompos nicht installiert, daher rate ich mal.
Delphi-Quellcode:
LMDLImage1.Picture.Assign(LMDGraphicList1.Graphics[0]);
BTW: wenn die erste Grafik den Index 0 hat, hat die zweite den Index 1 und nicht 2 ;) . Und noch etwas: den aktuellen Text der ComboBox auszulesen halte ich für ineffektiv, geh besser über den ItemIndex.
Delphi-Quellcode:
procedure TForm3.combobox1Change (Sender: TObject);
begin
  LMDLImage1.Picture.Assign(LMDGraphicList1.Graphics[ComboBox1.ItemIndex]);
end;
Wie gesagt, ich kenne die Komponenten nicht und kann daher nur raten, aber so in etwa könnte es funktionieren.

ApoCalyps0 20. Jan 2008 00:00

Re: Hilfe bei TLMDGraphicList und Imageausgabe......
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi DeddyH.

Ich bin keinesfalls ein Pro, was das programmieren betrifft. Ich bin ja durchaus schon mal froh, wenn es bis dato funktioniert.
Ich denke, dass aber der Text der Combobox eingelesen werden muss, da dadurch die Checkboxen auf true bz. false gesetzt werden.

Was aber....
Zitat:

LMDLImage1.Picture.Assign(LMDGraphicList1.Graphics[0]);
betrifft, geht es leider nicht, da LMDLImage einen Fehler bei Picture ausgibt.?.?.? Keine Ahnung warum.....

LMDGraphiclist ist ähnlich der Imagelist Komponente, allerdings kann man JPG Bilder in diese laden.

Bin offen, für weitere Ratschläge......

THX Ap0

DeddyH 20. Jan 2008 00:03

Re: Hilfe bei TLMDGraphicList und Imageausgabe......
 
Welche Eigenschaften stellt denn LMDLImage1 bereit? Da muss es doch etwas geben, wo man die Grafik zuweisen kann.

ApoCalyps0 20. Jan 2008 00:16

Re: Hilfe bei TLMDGraphicList und Imageausgabe......
 
wenn ich das wüsste....... Auf jedenfall, lässt sich der Inhalt von LMDGraphiclist1 nicht auf ein TPicturen zuweisen. Sagt zumindest der Debugger

:wall: :wall: :wall: ich bekomm schon Kopfaua!

Christian Seehase 20. Jan 2008 00:24

Re: Hilfe bei TLMDGraphicList und Imageausgabe......
 
Moin Zusammen,

TLMDLImage hat aber eine Eigenschaft ImageList.
Der könnte man ja mal, testeshalber, die TLMDGraphicList zuweisen.
Ausserdem hat TLMDImage auch eine Eigenschaft ImageIndex. Evtl. genügt es dann, nach der Zuweisung an ImageList hier den ImageIndex zu setzen, um ein entsprechendes Image aus der Liste anzeigen zu lassen.
Ich vermute jetzt einfach mal, dass das L bei LImage für List steht...

ApoCalyps0 20. Jan 2008 02:35

Re: Hilfe bei TLMDGraphicList und Imageausgabe......
 
:hello: Daaaaannnnkkkeeeee.

Die Anregung mit den Zuweisungen hat gefunzt, nur....

ging es nicht mit Imageindex sondern mit Listindex!

LMDLImage1.ListIndex:=0; usw. hat mich dann zum Erfolg gebracht.

Besten Dank für eure schnelle Hilfe. :corky:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:36 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