Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie aus Projekt Komponente erstellen? (https://www.delphipraxis.net/24180-wie-aus-projekt-komponente-erstellen.html)

KotB_Morpheus 16. Jun 2004 21:51


Wie aus Projekt Komponente erstellen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe folgendes Projekt vorliegen (siehe Anhang).
Ich will gerne das Diagramm was gezeichnet wird als Komponente haben, wo man quasi im OI breite und co festlegen kann und das Diagramm halt wie bei jeder anderen Komponente so auf das Form im Editiermodus gezeichnet wird.
Im OI müssten also folgende Werte vorkommen:
Breite, Höhe, Intervall, vielleicht noch Achsenbeschriftungen.

Das Problem ist, ich hab leider keinen blassen davon, wie ich das machen soll...

Ich hab schon 2 Tut's gelesen, aber da werden entweder keine Visuellen Komponente gemacht oder nur eine bestehende ein ganz klein wenig erweitert.

Wie sieht es hier aus? Ist sowas möglich? Möglich bestimmt, aber ich habe nichtmal den blassen eines Ansatzes ^^

Hier mal das Projekt. Meckert ruhig am Code was das zeug hält, is sicher schrecklich :(

Mfg Toni

Muetze1 17. Jun 2004 01:33

Re: Wie aus Projekt Komponente erstellen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin!

Es ist spät und ich muss ins Bett, aber mal so als Gedankenansatz habe ich schonmal eine Kompo erstellt und Teile deines Codes eingefügt. Ich denke mal mit dem Ansatz kommst du denn weiter.

1. Ich weiss, man könnte die Color Set Methoden zusammenfassen und per Index und einer get/set lösen, das wollte ich ihm nicht antun.
2. viele deiner Rechnung kann man vereinfachen, vor allem z.T. einfach zuviel geklammert.
3. Ich weiss, das der Font nicht sofort neu übernommen wird, wenn diese geändert wird (z.B. Color).
4. Du solltest bei der Beschriftung der Achse die Font Höhe und Weite beachten.
5. Du rechnest z.T. immernoch zuviel mit konstanten Werten - diese sind jetzt immer abhängig von Width und Height - also daraf skalieren...
6. Deine Beschriftung der Y Achse hat noch ein Problem (ein Anstrich zuviel unten) - einfach mal die Komponente grösser und kleiner machen.
7. Du musst dir noch was überlegen die Punkte zu verwalten...

MfG
Muetze1

KotB_Morpheus 17. Jun 2004 09:21

Re: Wie aus Projekt Komponente erstellen?
 
*KLATSCH*
*vomstuhlgefallen*

Ich bin ehrlichgesagt begeistert.
Ich hoffte einige Ansätze zu bekommen, aber das is ne Pracht :)

Ich bedanke mich recht herzlich für deine Mühen.
Habs auch soweit verstanden denk ich. Werd es gleich nochmal en bissl verfeinern, was mir so einfällt.

Wenn ich Fragen hab frag ich hier nochmal, denn genialer kann einem nicht geholfen werden. Wenn jetzt hier wärst würd ich dir erstmal en Bier spendieren ^^

Also nochmals vielen Dank.
Mfg Toni

KotB_Morpheus 17. Jun 2004 22:56

Re: Wie aus Projekt Komponente erstellen?
 
Sooo.

Läuft soweit, nur mit den Punkten eintragen komm ich mal wieder nicht weiter ^^

Also ich lass die Punkte, genauer erstmal zum testen per Timer jede Sekunde in eine Variable schreiben, wie kann ich der Komponente nun beibringen, dass sie die Variable ausliest und diese dann einträgt? :gruebel:

Ein Ansatz würde mir schon reichen :) Hab leider mit Komponenten noch nie was gemacht :(

Hoffe ihr habt en bissl Verständnis :P

Mfg Toni

dizzy 17. Jun 2004 23:48

Re: Wie aus Projekt Komponente erstellen?
 
In einer Variablen deines Programmes nützen die Daten der Kompo an sich erst einmal nichts. Du müsstest deiner Komponente eine Public-Variable, oder besser eine Property anstricken die dann die Daten für die Punkte enthält. Im einfachsten Fall ist das ein Array (Nachteil: Statische Anzahl an Punkten - besser eine Liste, aber auch komplizierter im Umgang). Auf dieses kanst du aus dem Code der Kompo heraus zugreifen. Als letztes brauchst du nur eine Funktion, bei der die Punkte ausgelesen und neugezeichnet werden sollen; hier böte sich z.B. die Methode "Paint" an (ich nehme mal an deine Kompo ist von TGraphicControl abgeleitet). Diese wird automatisch immer dann aufgerufen, wenn es nötig ist die Kompo neuzuzeichnen, oder man ruft sie aus dem Hauptprogramm mit TMyCompo.Repaint oder .Refresh auf.


gruss,
dizzy


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 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