Autor Beitrag
Nano-Ware
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 7



BeitragVerfasst: So 19.06.11 18:10 
Hey,

zu aller erst:Ich hab noch nie mit Zeichenobjekten gearbeitet und mache die Komponente zur Übung, also können Empfehlungen für Komponenten die das können wegbleiben :)

So :

Ich möchte einen Tageskalender malen und schon bevor ich anfange hab ich da erstmal folgende Fragen:

- Macht man das mit einer TImage Komponente oder mit etwas anderem?
- Nimmt man dafür Canvas oder was würdet ihr nehmen?

das besondere ist, dass nicht alle Stunden ganz auf die Form passen. Daher möchte ich scrollen können:

- Wie kann ich eine selbstgezeichnete Komponente scrollen?
- Ist das Scrollen dann auch so sauber wie bei anderen Windows Komponenten oder flackert es?

Außerdem sollen Teile davon anklickbar sein:

- Wie erkenne ich, dass ein bestimmter Teil der Komponente angeklickt wurde?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 19.06.11 18:49 
Hier findest du eine komplett selbst gezeichnete Scrollbar. Das ist zwar eine sehr frühe Version mit relativ schlecht geschriebenem Quelltext, aber dafür ist er leichter verständlich als meine aktuelle Version. (Die habe ich mangels Interesse nicht mehr veröffentlicht.)
www.delphi-forum.de/viewtopic.php?t=64090

Ja und was das Zeichnen an sich und die Reaktion auf die Maus angeht, findest du hier ein komplett selbst gezeichnetes Periodensystem:
www.delphi-forum.de/viewtopic.php?t=91534
Nano-Ware Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 7



BeitragVerfasst: So 19.06.11 21:17 
Danke Herr Jeanicke. Falls ich mich falsch ausgedrückt habe, ich wollte keine Scrollbar zeichnen sondern meine Komponente soll auf eine Scrollbar reagieren..
Und soll ich das mit Canvas machen?

Danke (:
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 19.06.11 22:19 
Ob du eine Scrollbar oder eine andere Komponente zeichnest ist vom Prinzip her egal. Das ist nur ein Beispiel. Aber in der Komponente reagiere ich auf die Mausbewegungen und Klicks usw., je nachdem wo diese passieren.

Genau das musst du ja auch machen. Du hast eine Zeichenfläche, also ein Canvas, das ist schon richtig. Und dort zeichnest du drauf und reagierst auf die Maus.

Nur das du eben keine Teile einer Scrollbar zeichnest, sondern Tage.
Nano-Ware Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 7



BeitragVerfasst: So 19.06.11 23:11 
Okay dann hab ich ja was zu tun (: Mir haben nur viele gesagt die Befehle von Canvas währen sehr dürftig (antialiasing fehlt?) und sind sehr langsam stimmt das ?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 20.06.11 05:32 
Du kannst natürlich auch mit GDI+ / DirectX arbeiten. Aber für eine normale Komponente braucht man das eigentlich nicht. Es sei denn du willst Animationen einbauen wie in den Ribbon-Komponenten von MS (die nutzen GDI+).

Aber wenn du noch nicht einmal normale Komponenten geschrieben hast, wie willst du dann damit klarkommen? Fang besser erst einmal langsam an... ;-)
n1con
Hält's aus hier
Beiträge: 12
Erhaltene Danke: 1

Win7 Ultimate x64
Delphi 6, Delphi 2007
BeitragVerfasst: Do 23.06.11 14:33 
Kleiner Tipp am Rande: Mit dem Befehl Doublebuffered:= true; bekommst du jedes Canvas ruckelfrei ;).
Funktioniert einwandfrei. Einfach in's OnCreate Event des Image stecken und alles ist ruckelfrei.

LG n1con