Entwickler-Ecke

Dateizugriff - Eigenschaften von Bildern ausgeben


BM_90 - Di 18.12.07 11:50
Titel: Eigenschaften von Bildern ausgeben
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 - 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


BM_90 - Di 18.12.07 17:10

Vielen Dank, aber das problem ist, dass ich die erst beim öffnen der Bilder erzeugen lasse...


mister_x - Di 18.12.07 18:39

user profile iconBM_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


BM_90 - 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 - Di 18.12.07 18:49

user profile iconBM_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???


BM_90 - 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 user profile iconNarses: Delphi-Tags hinzugefügt


mister_x - Di 18.12.07 19:01

user profile iconBM_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


BM_90 - 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


mister_x - 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...


BM_90 - Di 18.12.07 19:17

Ist bestimmt wieder ein ganz dummer Fehler:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
...
  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;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


mister_x - Di 18.12.07 19:18

user profile iconBM_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


BM_90 - Di 18.12.07 19:27

So wie ich das jetzt im Moment beurteilen kann, siehts sehr gut aus.
Ich bedanke mich!!


Martin1966 - Mi 19.12.07 13:57

user profile iconBM_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 [http://www.christian-stelzmann.de/artikel/crashkurs.htm] von Christian empfehlen.

Lg Martin


BM_90 - 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 - Mi 19.12.07 15:33

user profile iconBM_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


Blackheart666 - Do 20.12.07 17:59

http://www.delphipraxis.net/topic124995_eigenschaften+von+bildern+ausgeben.html


BM_90 - 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...