Delphi-PRAXiS
Seite 1 von 3  1 23   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi 512 TImages - 1 OnClick Event (https://www.delphipraxis.net/122745-512-timages-1-onclick-event.html)

seim 21. Okt 2008 14:03


512 TImages - 1 OnClick Event
 
Hi,
ich habe eine Matrix von 512 TImages, die alle auf eine OnClick Prozedur verweisen. In dieser Prozedur soll dann quasi sowas ablaufen:

DasGeklickteImage[Nr-XY].Picture:= NeuesBild.Picture;

Also quasi soll nur das TImage auf das geklickt wurde geändert werden. Für jedes eine eigene Prozedur machen ist mir jetzt gerade auch zu blöd ^.^
Ich habe keine Ahnung wie das funktionieren soll, denn mit "Sender.Picture" geht es nicht, weil Sender vom Typ TObject ist..


Das ganze brauche ich btw für dieses Projekt

guidok 21. Okt 2008 14:05

Re: 512 TImages - 1 OnClick Event
 
Delphi-Quellcode:
with sender as TImage do
begin
  Picture := NeuesBild.Picture;
end;
oder besser

Delphi-Quellcode:
var
  Image: TImage;
begin
   Image := Sender as TImage;
   Image.Picture := NeuesBild.Picture;

TUX_der_Pinguin 21. Okt 2008 14:05

Re: 512 TImages - 1 OnClick Event
 
Was ist mit TImage(Sender).Picture ?

franktron 21. Okt 2008 14:11

Re: 512 TImages - 1 OnClick Event
 
Ehrlich gesagt würde ich mal überlegen ob mal wirklich 512 TImages braucht und nicht nur 1.

P.S. geiler Würfel :-D

seim 21. Okt 2008 14:37

Re: 512 TImages - 1 OnClick Event
 
Vielen Dank funktioniert soweit :thumb:

nachti1505 21. Okt 2008 15:16

Re: 512 TImages - 1 OnClick Event
 
Zitat:

Zitat von TUX_der_Pinguin
Was ist mit TImage(Sender).Picture ?

In diesem Projekt durchaus möglich, ansonsten ist imo TClass(Referenz) immer ein bedingungsloses Casten ohne Typenprüfung zur Laufzeit.

Wenn im obigen Beispiel (durch irgendeinen Zufall) Sender mal kein Image ist, so würde

Delphi-Quellcode:
(Sender AS TImage).Picture
einen Konvertierungsfehler melden.

Delphi-Quellcode:
TImage(Sender).Picture
hingegen wirft meines Erachtens eine AV und ist somit nicht soooo schnell zu durchschauen.

Ganz sicher geht man, wenn man vorher noch auf

Delphi-Quellcode:
if (Sender IS TImage) then
prüft.

Medium 21. Okt 2008 15:42

Re: 512 TImages - 1 OnClick Event
 
Der Würfel gefällt mir auch extrem gut! Jedoch gefallen mir 512 Images arg wenig... Hier wäre es sicherlich sinnvoll ein einzelnes Image mit einem Bild zu nehmen, das die 512 Elemente rein visuell klar macht. Aus den geklickten Koordinaten lässt sich dann leicht wieder ein Index machen, über den deutlich ist welches Element geklickt wurde.

512 Images sind eine ziemliche Ressourcenverschwendung (Handles, GDI-Objekte und so krams stehen da hinter).

turboPASCAL 21. Okt 2008 16:05

Re: 512 TImages - 1 OnClick Event
 
512 Images... :shock:

Was machen dann die Leute die Werbeflächen mit 1000000 und mehr LED's programieren ? :mrgreen: ;)


Zitat:

Zitat von Medium
Der Würfel gefällt mir auch extrem gut! Jedoch gefallen mir 512 Images arg wenig... Hier wäre es sicherlich sinnvoll ein einzelnes Image mit einem Bild zu nehmen, das die 512 Elemente rein visuell klar macht. Aus den geklickten Koordinaten lässt sich dann leicht wieder ein Index machen, über den deutlich ist welches Element geklickt wurde.

512 Images sind eine ziemliche Ressourcenverschwendung (Handles, GDI-Objekte und so krams stehen da hinter).

dito.


PS.: Wie wird denn der Würfel angesteuert ?

seim 21. Okt 2008 17:06

Re: 512 TImages - 1 OnClick Event
 
Zitat:

Zitat von turboPASCAL
Was machen dann die Leute die Werbeflächen mit 1000000 und mehr LED's programieren ? :mrgreen: ;)

Wahrscheinlich das gleiche wie Eizo oder sonstwer bei jedem TFT.. An die Grafikkarte anschließen und eine Anwendung Fullscreen laufen lassen
Werbeflächen sind 2D, ich gehe mal davon aus, dass in diesem Fall Checkboxen reichen würden (allerdings kann man die hier sehr schlecht ablesen wenn die versetzt bzw. Pseudo-3D angeordnet sind - ich benutze auch nur Images weil ich wirklich absolut keine und wirklich keine Ahnung von OpenGL hab).


Zitat:

Wie wird denn der Würfel angesteuert ?
Es gab schon jemanden vor uns der sich an einen Würfel gewagt hat.. http://bralug.de/wiki/3D-LED-Display
und der hat eine richtig gute Firmware für einen Mikrocontroller namens "Etherrape" geschrieben. Ein wirklich guter MC, lässt sich per LAN, Serial Port oder Infrarot ansteuern.
Die Firmware haben wir jetzt einfach übernommen, weil...
1) Die funktioniert einfach
2) Es ist eine verdammt miese Arbeit den Support für IP und ICMP auf Bitübertragungsebene zu programmieren
3) In Delphi bin ich im vergleich zu C ein Meister :lol:
Verbesserungsmöglichkeiten haben wir als Elektrotechniker auch schon reichlich entdeckt und daran wird nun aktiv gearbeitet..
1) Dekoder aus Schieberegistern (mittlerweile gibt es den auch schon hier)
2) Die Transistoren haben eine Sättigungsspannung von 0,5V - bei 3 Transistoren die für eine LED gebraucht werden sind das 1,5V und das ist einfach zu hoch (gibt schließlich auch welche mit 0,1V)
3) Die Transistoren die die Ebenen durchschalten sollten eigentlich PNP Transistoren sein
4) Ansteuerung der Schieberegister über den Bus Ausgang statt über einen normalen Ausgangsport - wäre wesentlich einfacher weil das Clocksignal selbst erzeugt würde etc.


Das Wunschziel ist eine Spektrum-Anzeige per Winamp. Wenn alles fertig ist gibt's ne ausführliche Dokumentation inkl. Source Codes :wink:

turboPASCAL 22. Okt 2008 01:32

Re: 512 TImages - 1 OnClick Event
 
Liste der Anhänge anzeigen (Anzahl: 2)
So, das mit dem LED-Würfel ging mir nicht mehr aus dem Kopf.
Ein Project wie dieses ist schon mal grosse Klasse.

Nun zur Darstellung und zur Ansteuerung der LED's. Die Idee mit den
512 ( 8 * 8 * 8 ;) ) Images ist nicht nur Unübersichtlich sondern auch
Unpraktisch für das Händling.
Ist es denn nicht besser nur jeweils ein 8*8 Feld anzeigen zu lassen
um es zu "Bedienen" ?

Im Anhang findest du ein Beispiel wie so etwas aussehen kann.

Features sind:
  • - (pseudo) Ansteurerung von 512 LED's
    - Darstellung in 2D
    - Darstellung in 3D (OpenGL)
    - Darstellung in 3D im Quellcode zu- oder abschaltbar
    - Speicherfunktion von LED-Layouts
    - Ladefunktion von LED-Layouts
    - Anzeige der Anzahl der aktiven LED's
    - Mit einem Klck gehts zur Homepage
    - Top Layoutdesign
    - und ähhh den Rest hab ich vergessen... :mrgreen:

Add:
  • - Sound play
    - Rechtsklick auf OpenGL-Quader für Popupmenu
    - kleinen Fehler beseitigt
    - und vill. noch mehr... :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:14 Uhr.
Seite 1 von 3  1 23   

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf