AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi TImage dynamisch auf TImage erstellen...
Thema durchsuchen
Ansicht
Themen-Optionen

TImage dynamisch auf TImage erstellen...

Ein Thema von NetSonic · begonnen am 15. Mai 2007 · letzter Beitrag vom 15. Mai 2007
Antwort Antwort
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#1

TImage dynamisch auf TImage erstellen...

  Alt 15. Mai 2007, 12:20
Folgende Problemstellung:

Ich habe eine MDI-Child-Form auf der sich eine TImage-Komponente befindet, die einen Lageplan in Form einer JPG-Datei enthält.
Wenn ich nun mit der linken Maustaste auf diese Image-Kompo klicke, soll mir das Programm eine weiteres TImage mit einer anderen Grafik an den Mauskoordinaten erstellen und über dem Lageplan anzeigen. Das ganze sieht bisher so aus:

Delphi-Quellcode:
procedure TfrmLageplan.imgLageplanMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
   imgDecoder: TImage;
begin
     //Decoder an Mauskoordinaten erstellen
     imgDecoder := TImage.Create(Self);
     with imgDecoder do
     begin
          name := 'Standort';
          Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + '\img\' + 'aktiv.bmp');
          autosize := true;
          visible := true;
          left := X;
          top := Y;
     end;
end;
Die Komponente wird auch erstellt, denn wenn ich ein weiteres Mal klicke, meldet er, dass eine Komponente mit dem Namen "Standort" bereits existiert. Allerdings zeigt er mir die dynamisch erzeugte TImage-Komponente nicht an? Denkfehler? Was mach ich falsch?
  Mit Zitat antworten Zitat
Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#2

Re: TImage dynamisch auf TImage erstellen...

  Alt 15. Mai 2007, 12:22
Parent setzen oder .Show aufrufen? (Weiß nicht, probiers mal)
Richard Mahr
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#3

Re: TImage dynamisch auf TImage erstellen...

  Alt 15. Mai 2007, 12:26
Die Meldung daß bereits eine solche existiert ist ja auch richtig. Besser einmal anlegen und wiederverwenden als für jeden Mausklick extra Speicher verquasen und nicht wieder freigeben.
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#4

Re: TImage dynamisch auf TImage erstellen...

  Alt 15. Mai 2007, 12:29
Danke Tormentor32 für den Tipp mit Parent... hab ich total übersehen!
Jetzt funzt es perfekt!

Delphi-Quellcode:
procedure TfrmLageplan.imgLageplanMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
   imgDecoder: TImage;
begin
     //Decoder an Mauskoordinaten erstellen
     imgDecoder := TImage.Create(Self);
     with imgDecoder do
     begin
          name := 'Standort';
          parent := self;
          Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + '\img\' + 'aktiv.bmp');
          autosize := true;
          visible := true;
          left := X;
          top := Y;
     end;
end;
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#5

Re: TImage dynamisch auf TImage erstellen...

  Alt 15. Mai 2007, 12:36
Siehe Hinweis weiter oben, das ist sehr weit weg von "perfekt", das ist immer noch ein Speicherloch!
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#6

Re: TImage dynamisch auf TImage erstellen...

  Alt 15. Mai 2007, 12:39
Ich muss das so oder so noch überarbeiten, weil ich auf dem "Lageplan" bis 255 "Standorte" anlegen können muss... Die bekommen dann im Namen fortlaufende Nummern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: TImage dynamisch auf TImage erstellen...

  Alt 15. Mai 2007, 12:54
eigentlich brauchen sie gar keinen Namen denn um die Standortbilder wieder frei geben zu können musst du sie ja in ein Array oder eine Liste hängen und somit kannst du sie darüber jederzeit ansprechen (für Freigaben etc.)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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 03:06 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