Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Componenten schräg anordnen (https://www.delphipraxis.net/149756-componenten-schraeg-anordnen.html)

eragon123 29. Mär 2010 14:41


Componenten schräg anordnen
 
Ich hab jetzt leider keinen passenden Beitrag gefunden, deshalb hier meine Frage:

Wie bekomme ich es hin in Delphi Komponenten Schräg (z.B. Diagonal über das Bild) anzuordnen?

Konkretes Beispiel: Ich habe ein Hintergrundbild, welches ein Buch darstellt. Da soll jetzt z.B. per Textfeld Text reingeschrieben werden. Das Buch ist aber natürlich nicht genau gerade. Wie bekomme ich das jetzt hin das der Text auch schräg verläuft?

PS Noch eine Zusatzfrage: Per
Delphi-Quellcode:
lbl.caption := lbl.caption + Buchstabe
setze ich den Text. Wie erreiche ich jetzt das der auch mal einen Zeilenumbruch macht wenn die Zeile voll ist? Wordwrap macht das nicht bei mir...

implementation 29. Mär 2010 16:50

Re: Componenten schräg anordnen
 
Zum 1.:
Zeichne den Text einfach selber. Am einfachsten ist es dann natürlich, wenn man die GDI+ nimmt und RotateMatrix() aufruft. Direct2D könntest du auch benutzen. Aber selbst mit der normalen GDI / TCanvas dürfte das zu bewältigen sein.

Zum 2.:
WordWrap bricht immer nur bei Leerzeichen. Wenn du immer nur Buchstaben anhängst bleibt das in einer Zeile.

PS: Demnächst nur noch eine Frage per Thread posten.
Für jede weitere Frage einen neuen Thread.

Rudirabbit 29. Mär 2010 18:38

Re: Componenten schräg anordnen
 
Ich sehe das nicht so einfach wie implementation (eh - cooler nick).

eragon123 möchte mit der Tastatur in eine z.b TEdit Daten eingeben.

Also auf dem schrägem Hintergrund sollen Eingabefelder fokussiert werden können, und dort kann ein Text eingegeben werden
Die TEdit müsste also den selben Winkel haben :roll:

Malen auf dem canvas ist meiner Meinung nach nicht Zielführend.

Man müsste aus einer TEdit Class eine TEdit_Angle bauen :gruebel:

Medium 29. Mär 2010 18:56

Re: Componenten schräg anordnen
 
Das geht nur leider so nicht, da die gesamten Standard-Controls direkt von Windows bereit gestellt werden, und in diesen solche Variationen an keiner Stelle ansatzweise bedacht sind. Die einzige Lösung ist, wie bereits implementation angedeutet hat, komplett selbst Hand anzulegen, und das Verhalten von einem Edit auf der eigenen Ausgabe abzubilden. Das ist auch schon vergleichsweise knifflig, und sicherlich auch ein ganzer Stiefel Schreibarbeit, vor allem je nach dem wie variabel man seine Komponenten dann auch halten mag.

Das ganze ist ein wenig vergleichbar mit der Erstellung (bzw. Nachbildung) visueller Controls in vielen D3D/OGL Spielen, wo in diese Richtung überhaupt keine Unterstützung vom OS gegeben wird, und alles was man sieht intern einfach nur eine Hand voll Grafiken ist, mit komplett selbst implementierten Verhalten.

implementation 29. Mär 2010 19:10

Re: Componenten schräg anordnen
 
Wer weiß, vielleicht hat ja irgendjemand, der sich die Mühe schon gemacht hat, seine Kompo veröffentlicht... -> einfach googeln

Sonst selber machen. Ist auch nicht so schwer. Viel muss das Edit ja nicht können:
- sich selbst zeichnen. (siehe mein obiger Post)
- den Fokus erhalten können. (durch Ableitung von TWinControl)
- die Tastatureingaben abfangen. (Nachrichten WM_CHAR, WM_KEYUP, WM_KEYDOWN)

Das lässt sich recht schnell schaffen. Hab ich selbst auch schon gemacht, allerdings in C#, sonst würde ich den Code hier posten.

Rudirabbit 29. Mär 2010 19:12

Re: Componenten schräg anordnen
 
von Medium:
Zitat:

Die einzige Lösung ist, wie bereits implementation angedeutet hat, komplett selbst Hand anzulegen, und das Verhalten von einem Edit auf der eigenen Ausgabe abzubilden. Das ist auch schon vergleichsweise knifflig, und sicherlich auch ein ganzer Stiefel Schreibarbeit, vor allem je nach dem wie variabel man seine Komponenten dann auch halten mag.
Ich Stimme dir zu, nur der Vorschlag dies aus einer TEdit Class abzuleiten kommt von mir - egal :)

Medium 29. Mär 2010 19:32

Re: Componenten schräg anordnen
 
Was halt leider nicht wirklich eine gute Idee ist, da das Edit insbesondere in Punkto Darstellung von Windows verwaltet wird, was man zunächst also erstmal unterdrücken müsste. Was dann noch brauchbares davon über bleibt, hat man mit TWinControl als Vorfahr dann auch ;)

Edit: Trotz deines Edits lass ich's mal stehen :)

Rudirabbit 29. Mär 2010 19:55

Re: Componenten schräg anordnen
 
@Medium: Du hast schon recht, im Endeffekt wäre es dann ein Nachfahre von TWinControl :oops:
Erst Gehirn einschalten und dann posten, nicht umgekehrt - sorry.


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