AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi OnClick bei Komponenten, die zu Laufzeit erstellt wurden!
Thema durchsuchen
Ansicht
Themen-Optionen

OnClick bei Komponenten, die zu Laufzeit erstellt wurden!

Ein Thema von Nicolai1234 · begonnen am 4. Okt 2004 · letzter Beitrag vom 4. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#1

OnClick bei Komponenten, die zu Laufzeit erstellt wurden!

  Alt 4. Okt 2004, 21:42
Ich habe ca. 100 TImage zur Laufzeit erstellt! (Array[1..10,1..10] of Timage)
Sie werden wie gesagt erst zur Laufzeit erstellt. Wenn ich dann auf ein Bild klicke, soll eine bestimmte Bilddatei in das TImage geladen werden!
Wie kann ich das machen, ich kann ja schlecht für alle Images eine OnClick procedure schreiben! Und selbst wenn; wie weist man die dann dem Image zu?
Fragen über Fragen; wie würdet ihr das machen?
Danke im voraus...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden

  Alt 4. Okt 2004, 21:48
einfach allen Images die gleiche onClick procedure zuweisen. einfach beim Creieren allen einen namen geben und dann mit findcomponent denen das gleiche zuweisen. Und dann im OnClick den Sender zu TImageCasten und anhand dessen unterschiedliche Bilder in den Sender laden.
//wenn zum beispiel die Bilder "image1" bis "image15" heißen
Delphi-Quellcode:
procedure TForm.fOnClickProc(Sender.TObject);
var LImage: TImage;
begin
  if Sender is TImage then
  begin
    LImage := TImage(Sender);
    LImage.LoadFromFile('bild' + copy(LImage.name, 6, length(LImage.name)) + '.bmp');
  end;
end;
so in der art kannst du das machen...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden

  Alt 4. Okt 2004, 22:05
Bei mir geht das alles nicht!
Ich habe das hier:
http://www.delphipraxis.net/internal...fzeit+zuweisen
noch probiert, aber auch da kommen nur fehler!
Kann mir vllt. einer sagen, wo ich das alles hinschreiben muss?
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden

  Alt 4. Okt 2004, 22:07
Hi Nicolai,

Zitat von Nicolai1605:
Kann mir vllt. einer sagen, wo ich das alles hinschreiben muss?
Wichtig ist, dass du die OnClick-Routine erst NACH dem erstellen der Images zuweist. Ansonsten gibts eine schöne AV.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden

  Alt 4. Okt 2004, 22:10
wie erzeugst du derzeit die images? So sollte es ohne probleme gehen (source im onCreate des Forms)
Delphi-Quellcode:
var LImage: TImage;
    LCount: Integer;
begin
  for LCount := 1 to 100 do
  begin
    LImage := TImage.Create;
    LImage.Parent := Self;
    LImage.Name := 'Bild' + inttostr(LCount);
    LImage.OnClick := youOnClickEventProc;
    //eventuell noch die Größe des Images setzen
  end;
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden

  Alt 4. Okt 2004, 22:13
Momentan erstelle ich sie so:
Delphi-Quellcode:
var Quadrat: Array [1..100,1..100] of TImage;
...
...

for x := 1 to 10 do
for y := 1 to 10 do
begin
Quadrat[x,y] := TImage.Create(form1);
with Quadrat[x,y] do
        begin
        parent := form1;
        height := hw;
        width := hw;
        left := (x-1)*hw+190;
        top := (y-1)*hw+5;
        picture.LoadFromFile('Pictures\Blume.ico');
        end;

end;
Wo muss ich denn die OnClick procedure genau hinschreiben?
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#7

Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden

  Alt 4. Okt 2004, 22:15
Hi Nicolai,

Code:
var Quadrat: Array [1..100,1..100] of TImage;
with Quadrat[x,y] do
        begin
        parent := form1;
        height := hw;
        width := hw;
        left := (x-1)*hw+190;
        top := (y-1)*hw+5;
        picture.LoadFromFile('Pictures\Blume.ico');
        [color=red]OnClick := DeineProzedur;[/color]
        end;
end;
Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden

  Alt 4. Okt 2004, 22:18
Zitat von alcaeus:
Hi Nicolai,

Code:
var Quadrat: Array [1..100,1..100] of TImage;
with Quadrat[x,y] do
        begin
        parent := form1;
        height := hw;
        width := hw;
        left := (x-1)*hw+190;
        top := (y-1)*hw+5;
        picture.LoadFromFile('Pictures\Blume.ico');
        [color=red]OnClick := DeineProzedur;[/color]
        end;
end;
Greetz
alcaeus
Dann sieht es so aus:
Zitat von Mein Delphi 6 Professional:
[Fehler] Unit1.pas(59): Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden

  Alt 4. Okt 2004, 22:18
und anstelle von
Delphi-Quellcode:
height := hw;
width := hw;
left := (x-1)*hw+190;
top := (y-1)*hw+5;
solltest du
setbounds((x-1)*hw+190, (y-1)*hw+5, hw, hw); schreiben da intern sonst 4 mal "SetBounds" aufgerufen wird
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden

  Alt 4. Okt 2004, 22:28
Ok, habe ich geändert, aber die Fehlermeldung von oben ist immernoch da!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:53 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