Autor |
Beitrag |
BM_90
      
Beiträge: 49
|
Verfasst: Di 18.12.07 11:50
Moin!
Ich hab folgendes Problem: Mit meinem Programm kann ich mehrere Bilder öffnen, die denn neben einander angeordnet werden. Ich möchte die Bilder gerne per Mausklick "auswählen", also markieren können. Von dem markierten Bild sollen dann die Eigenschaften (Auflösung, Name, Pfad, Größe,...) in TLabels angezeigt werden. Leider habe ich aber keinen Schimmer, wie das geht.
Vielen Dank schonmal im Vorraus...
|
|
jackle32
      
Beiträge: 183
Erhaltene Danke: 7
Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
|
Verfasst: Di 18.12.07 12:27
Servus,
dafür hast du bei der TImage Komponente das Ereignis "OnMouseDown". Dieses wird aufgerufen wenn du auf das entsprechende Image klickst und da lässt du dann einfach die Eigenschaften des jeweiligen Bildes auslesen und Anzeigen. Dieses Ereignis kann auch noch mehr, z.B. sagt es dir welche Maustaste gedrückt wurde. Das steht dann aber in der Hilfe ausführlich drin.
Gruß Jack
_________________ Es gibt keine dummen Fragen, nur dumme Antworten.
|
|
BM_90 
      
Beiträge: 49
|
Verfasst: Di 18.12.07 17:10
Vielen Dank, aber das problem ist, dass ich die erst beim öffnen der Bilder erzeugen lasse...
|
|
mister_x
      
Beiträge: 85
Win 98, WIN 2000, WIN XP PRO
Delphi 2006
|
Verfasst: Di 18.12.07 18:39
BM_90 hat folgendes geschrieben: | Vielen Dank, aber das problem ist, dass ich die erst beim öffnen der Bilder erzeugen lasse... |
dann weiß halt da auch das OnClick event zu
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| ... private procedure ImageClick(Sender:TObject); .... procedure TForm1.ImageClick(Sender:TObject); begin Caption := IntToStr((Sender as TImage).Width); end;
procedure TForm1.BitBtn1Click(Sender: TObject); var I : Integer; begin if OpenDialog.Execute then begin for I:=0 to OpenDialog.Files.Count-1 do if I<100 then begin Images[I] := TImage.Create(Self); Images[I].Parent := Form1; Images[I].OnClick := ImageClick; ..... end; end; end; end. |
Mister_X
_________________ Der Computer ist das genialste Produkt der menschlichen Faulheit
|
|
BM_90 
      
Beiträge: 49
|
Verfasst: Di 18.12.07 18:47
Ich habe jetzt mal eine ganz dumme Frage:
Soll das "ImageClick" eine neue procedure sein??
Wenn ja, dann haut das nicht hin.
Wenn nein, dann bin ich wohl mal wieder zu blöd dafür...
|
|
mister_x
      
Beiträge: 85
Win 98, WIN 2000, WIN XP PRO
Delphi 2006
|
Verfasst: Di 18.12.07 18:49
BM_90 hat folgendes geschrieben: | Ich habe jetzt mal eine ganz dumme Frage:
Soll das "ImageClick" eine neue procedure sein??
Wenn ja, dann haut das nicht hin.
Wenn nein, dann bin ich wohl mal wieder zu blöd dafür... |
jep des is ne neue procedure aber warum soll des dann nich hin haun???
_________________ Der Computer ist das genialste Produkt der menschlichen Faulheit
|
|
BM_90 
      
Beiträge: 49
|
Verfasst: Di 18.12.07 18:56
Das ist meine precedure:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure ImageClick; var I : Integer; begin images[I].width:=300; Images[I].Stretch := true; Images[I].Proportional := true; end; |
Und das hat Delphi zu meckern:
[DCC Fehler] Unit1.pas(168): E2009 Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
mister_x
      
Beiträge: 85
Win 98, WIN 2000, WIN XP PRO
Delphi 2006
|
Verfasst: Di 18.12.07 19:01
BM_90 hat folgendes geschrieben: | Das ist meine precedure:
procedure ImageClick;
var I : Integer;
begin
images[I].width:=300;
Images[I].Stretch := true;
Images[I].Proportional := true;
end;
Und das hat Delphi zu meckern:
[DCC Fehler] Unit1.pas(168): E2009 Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur' |
schreibs ma so um
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.ImageClick(Sender:TObject); begin (Sender as TImage).width:=300; (Sender as TImage).Stretch := true; (Sender as TImage).Proportional := true; end; |
un nich vergessen die procedure zu deklarieren
wie oben geschrieben bei private oder public deklarieren....
Mister_X
_________________ Der Computer ist das genialste Produkt der menschlichen Faulheit
|
|
BM_90 
      
Beiträge: 49
|
Verfasst: Di 18.12.07 19:09
Ich weiß, ich stell mich bestimmt total dumm an, aber mein Info-Lehrer hat selber keine Ahnung, wie soll man da was lernen... Muss mir fast alles selber beibringen, naja...
jedenfalls meckert Delphi schonwieder
Einloggen, um Attachments anzusehen!
|
|
mister_x
      
Beiträge: 85
Win 98, WIN 2000, WIN XP PRO
Delphi 2006
|
Verfasst: Di 18.12.07 19:14
haste die procedure deklariert???
schick ma auschnitte von deinem quelltext also dein ImageClick procedure un wo dus deklariert hast...
_________________ Der Computer ist das genialste Produkt der menschlichen Faulheit
|
|
BM_90 
      
Beiträge: 49
|
Verfasst: Di 18.12.07 19:17
|
|
mister_x
      
Beiträge: 85
Win 98, WIN 2000, WIN XP PRO
Delphi 2006
|
Verfasst: Di 18.12.07 19:18
BM_90 hat folgendes geschrieben: | Ist bestimmt wieder ein ganz dummer Fehler:
...
private
procedure TForm1.ImageClick(Sender:TObject);
public
{ Public-Deklarationen }
end;
...
procedure TForm1.ImageClick(Sender:TObject);
begin
(Sender as TImage).width:=300;
(Sender as TImage).Stretch := true;
(Sender as TImage).Proportional := true;
end; |
bei der deklaration machste des TForm1 weg un dann dürfte es gehn
_________________ Der Computer ist das genialste Produkt der menschlichen Faulheit
|
|
BM_90 
      
Beiträge: 49
|
Verfasst: Di 18.12.07 19:27
So wie ich das jetzt im Moment beurteilen kann, siehts sehr gut aus.
Ich bedanke mich!!
|
|
Martin1966
      
Beiträge: 1068
Win 2000, Win XP
Delphi 7, Delphi 2005
|
Verfasst: Mi 19.12.07 13:57
BM_90 hat folgendes geschrieben: | Ich weiß, ich stell mich bestimmt total dumm an, aber mein Info-Lehrer hat selber keine Ahnung, wie soll man da was lernen. |
Ja ja, immer liegt es am Lehrer.
Bei deinem Kenntnisstand möchte ich dir den Delphi-Crash-Kurs von Christian empfehlen.
Lg Martin
_________________ Ein Nutzer der Ecke
|
|
BM_90 
      
Beiträge: 49
|
Verfasst: Mi 19.12.07 14:45
Danke für den Link, wird mir nur nicht viel bringen. Hab schon das Buch "Jetz lerne ich Delphi" von Markt+Technik. Was ich damit nicht gelernt habe, lerne ich wahrscheinlich auch so nicht mehr.
Aber wie ich die Eigenschaften ausgebe, weiß ich immer noch nicht...
|
|
Martin1966
      
Beiträge: 1068
Win 2000, Win XP
Delphi 7, Delphi 2005
|
Verfasst: Mi 19.12.07 15:33
BM_90 hat folgendes geschrieben: | Aber wie ich die Eigenschaften ausgebe, weiß ich immer noch nicht... |
Funktioniert denn mittlerweile das Beispiel was Mister X gestern gepostet hat:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| private procedure ImageClick(Sender:TObject); .... procedure TForm1.ImageClick(Sender:TObject); begin Caption := IntToStr((Sender as TImage).Width); end;
procedure TForm1.BitBtn1Click(Sender: TObject); var I : Integer; begin if OpenDialog.Execute then begin for I:=0 to OpenDialog.Files.Count-1 do if I<100 then begin Images[I] := TImage.Create(Self); Images[I].Parent := Form1; Images[I].OnClick := ImageClick; ..... end; end; end; |
??
Lg Martin
_________________ Ein Nutzer der Ecke
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Do 20.12.07 17:59
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
BM_90 
      
Beiträge: 49
|
Verfasst: Do 03.01.08 16:48
@Martin1966:
Vielen Dank! Ich gehe einfach mal davon aus, dass es funktioniert. Konnte es noch nicht ausprobieren, mein Delphi spinnt ein bisschen...
|
|