Announcement

Collapse
No announcement yet.

TLabel Componente im StringGrid positionieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TLabel Componente im StringGrid positionieren

    Hallo,

    ich möchte einen Kalender mittels eines StringGrids darstellen mit Terminen in verschiedenen Farben, welche man anklicken kann um nähere Details zu den Terminen zu sehen.

    Abgesehen, dass ich mit der Grid Komponente von TMS Software herum experimeniere - ich habe aber kein Geld dafür - ist das Problem auch für die normale StringGrid Komponente das gleiche.

    Ich habe mir gedacht, dass ich mir mehrere TLabel Komponenten zur Laufzeit erstelle und dem StringGrif hinzufüge. DIese kann ich ja in verschiedenen Farben darstellen und ich kann das Ereignis OnClick auf diese Labels abfangen.

    Das Problem ist, dass ich diese Labels nicht richtig verwaltet und positioniert bekomme im Grid.

    Erst dachte ich, dass ich die Zeiger auf die einzelnen Komponenten selbst verwalten kann, aber irgendwie macht entweder der Compiler nicht mit, oder es treten Zugriffsverletzungen während der Laufzeit auf.
    Nun habe ich mich entschlossen die Zeiger in einer TComponentList zu verwalten.

    Aber das Problem der Positionierung im Grid ist nach wie vor unklar. Er zeigt mir unabhängig welche Werte ich Left + Top zuweise das Label immer in der oberen linken Ecke des Grids an und auch noch unterhalb des Textes der Fixen Spalte/Zeile.

    Hat da irgend jemand eine Idee oder Erfahrung mit?

    Gruss
    Christian

  • #2
    Da keiner weiss wie du das gemacht hast, wird auch keiner eine Hilfestellung geben können.

    Allgemein:

    Zeichne deine Inhalte im OnDraw der Zelle im vorgegebenen Rechteck.

    Mir ist unklar, wozu ein extra Label in ein Grid eingefügt werden muss. Schließlich stellt das Grid doch nun nur Text dar?

    Eine andere Hintergrundfarbe für eine Zelle kann doch nun wie gesagt im OnDraw der Zelle mittels dem Setzen des Backgrounds erreicht werden. Somit würde man ja nur eine Liste der Termine verwalten müssen, die andersfarbig gezeichnet werden sollen.

    http://www.marquardtnet.info/cecke/k...tringgrid.html

    Schau da nach wie es gemacht wird
    Zuletzt editiert von Christian Marquardt; 16.06.2008, 07:16.
    Christian

    Comment


    • #3
      Nun, diesen Beitrag kenne ich, er liefert mir aber keine Lösung für mein problem. Die Hintergrundfarbe ist uninteressant. Es geht mir darum in einer Zelle mehrere Zeilen in verschiedenen Farben darzustellen und die Möglichkeit zu beiten auf eine Zeile!!! innerhalb einer Zelle zu klicken. Die einzelnen Zeilen sollendie Termineinträge an einem Tag darstellen. Der Tag wird durch eine Zelle repräsentiert.

      Das Problem ist, die farbliche Darstellung der Zeilen und das abfangen des OnClick Ereignis auf diese Zeilen.

      Die Idee ist, für jede Zeile eine TLabel Komponente in die Zelle zu positionieren. Diese kann in einer einaderen Schriftfarbe dargestellt werden und das Ereignis OnClick kann ebenfalls abgefangen werden. Nur ich finde bekomme die Positionen der Zelle nicht geliefert.

      Die OnDraw Methode wollte ich nicht überschreiben, sondern das Default Drawing eingeschaltet lassen.

      Ich habe es zuerst mit dem überschreiben der OnDraw Methode verscuht, aber es flimmerte und war sehr merkwürdig war, im Hintergrund der von mir gezeichneten Zellen waren noch die anderen standardmäßig gezeichneten Zellen zu sehen. Diese waren nicht komplet verdeckt und man konnte sogar noch drauf klciken.

      Ich finde die Standard Draw Methode macht das recht schnell und gut - ich sehe von daher keinen Grund diee zu überschreiben.

      Das Problem ist jedoch, dass nur in dieser Methode in das Canvas geliefert bekomme.

      Gibt es auch noch eine andere Möglichkeit???

      Comment


      • #4
        Ich finde die Standard Draw Methode macht das recht schnell und gut - ich sehe von daher keinen Grund diee zu überschreiben.
        Ich sehe keine Alternative zum Überschreiben von OnDraw, weil du ja eigenen Inhalt darstellen willst und damit das "Standardzeichnen" nicht mehr zu gebrauchen ist. Gerade wenn andere Komponenten dargestellt werden sollen, sollte das im OnDraw stattfinden.

        Des Weiteren bietet OnDraw alles was man braucht

        - Zeitpunkt des Aufrufes wird vom Sytem geliefert
        - Position wird ebenfalls geliefert
        Christian

        Comment

        Working...
        X