AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia TImage Objekt als Sender nutzen

TImage Objekt als Sender nutzen

Ein Thema von Nightblade · begonnen am 1. Aug 2011 · letzter Beitrag vom 2. Aug 2011
Antwort Antwort
Nightblade

Registriert seit: 19. Jul 2011
6 Beiträge
 
#1

AW: TImage Objekt als Sender nutzen

  Alt 1. Aug 2011, 19:58
Das verstehe ich leider nicht. Ich bin blutigster Anfänger was Delphi angeht.
Image sollte tatsächlich ein Bild sein, da durch den Befehl nur alle TImages unsichtbar gemacht werden sollen. Ohne jedesmal xxx.visible:= false; etc. einzutragen.

Wo genau soll ich
Code:
TImage(Controls[i]).Visible := Controls[i] = Image;
noch eintragen.

Hab´s jetzt mal so probiert:

Delphi-Quellcode:
procedure TLeitern.LeiterauswahlChange(Sender: TObject);
var ShowImageHideOther:timage;
begin
  if Sender is TImage(Controls[i]).Visible := Controls[i] = Image; then
BEGIN
ShowImageHideOther:= TImage(Controls[i]).Visible := Controls[i] = Image;(Sender);
END;
leiterauswahl.OnChange := ShowImageHideOther;
{Also hinter jedes TImage den Befehl dahinter geschrieben.}
Jetzt kommt fehlermeldung:
[Error] Leiter.pas(367): Undeclared identifier: 'Image'
[Error] Leiter.pas(369): Incompatible types
[Error] Leiter.pas(371): Incompatible types: 'TNotifyEvent' and 'TImage'
[Hint] Leiter.pas(99): Private symbol 'ShowImageHideOther' declared but never used

Ich will doch bloss alle Bilder verschwinden lassen.
  Mit Zitat antworten Zitat
Nightblade

Registriert seit: 19. Jul 2011
6 Beiträge
 
#2

AW: TImage Objekt als Sender nutzen

  Alt 1. Aug 2011, 20:24
Wenn ich´s richtig umgesetzt habe.

Delphi-Quellcode:
procedure TLeitern.LeiterauswahlChange(Sender: TObject);
var{Zwischenspeichervorschlag von mkinzler}
   imgSender: TImage;
begin
  try
    imgSender := (Sender as Timage);
    leiterauswahl.OnChange := ShowImageHideOther;
finally
{geht leider auch nicht}
if leiterauswahl.Items[leiterauswahl.ItemIndex] = 'Stahlrohleiter Eccothen
BEGIN
memo1.clear;
memo1.lines.Add('Holme weiß lackiert, mit Kunststoffstufen (max. Belastung ca. 90 kg)');
lp.Text := '79,95';
hbk.Visible := true;
END
else
[Error] Leiter.pas(371): Incompatible types: 'TObject' and 'TImage'
[Error] Leiter.pas(464): Statement expected but 'PROCEDURE' found

Geht also leider auch nicht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.575 Beiträge
 
Delphi 12 Athens
 
#3

AW: TImage Objekt als Sender nutzen

  Alt 1. Aug 2011, 21:07
Und wo ist Zeile 371?

Zitat:
Delphi-Quellcode:
procedure TLeitern.LeiterauswahlChange(Sender: TObject);
var ShowImageHideOther:timage;
begin
  if Sender is TImage(Controls[i]).Visible := Controls[i] = Image; then
BEGIN
ShowImageHideOther:= TImage(Controls[i]).Visible := Controls[i] = Image;(Sender);
END;
leiterauswahl.OnChange := ShowImageHideOther;
Ich weiß ja nicht in wie weit du mit der Delphi-Syntax zurecht kommst, aber hier sollte doch nahezu jeder sehn, daß es so nicht gehn kann?
Schon alleine der Zuweisungsoperator := ist in Booleanischen Abfragestatements (ala IF) nicht erlaubt.

Aber eigentlich was es so gemeint
TImage(Controls[i]).Visible := Controls[i] = Image; (Controls[i] ist sichtbar, wenn es ein der Image-Instanz entspricht)
oder eventuell
(Sender as TImage).Visible := Sender is TImage; (Sender ist sichtbar, wenn es ein TImage ist)
oder?
(Sender as TImage).Visible := False; (Sender sollte ein TImage sein und wird nun unsichtbar.


Für dich würde ich aber empfehlen, besser aus weiche Casts ala (Sender as TImage) zu setzen,
anstatt auf harte Casts ala TImage(Sender) , denn ersterer prüft den Typ und meldet sich, wenn etwas nicht stimmt.
> siehe IS und AS in der OH
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz