Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zwei zellen quer verbinden (https://www.delphipraxis.net/116368-zwei-zellen-quer-verbinden.html)

Razor90 27. Jun 2008 14:46


Zwei zellen quer verbinden
 
Hallo, ein neuer Tag, ein neues Problem.. :P
Ich möchte zwei zellen in einer stringgrid verbinden. Aber nur diese beiden Zellen, die nebeneinander sind [1,0] und [2,0].
Habe auch schon rumprobiert, aber leider mir dem ondrawcell keine erfahrung...vll könnt ihr mir weiterhelfen. hier mein ansatz
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
var R:TRect;


begin

    if aRow=0 then
    if acol=2 then
   with sender as tstringgrid do begin

      rect.left:= Rect.left-ColWidths[ACol];
    Canvas.Brush.Color := clBtnFace;
    Canvas.Brush.Style := bsSolid;
    Canvas.FillRect( Rect );
  end;
  end;

end.

DeddyH 27. Jun 2008 14:52

Re: Zwei zellen quer verbinden
 
Schau nochmal im anderen Thread.

Razor90 27. Jun 2008 15:01

Re: Zwei zellen quer verbinden
 
ja tut mir leid wenn ich doppelposts mache, aber ich kann das nicht... :wall: Ich weiß gar nicht was überhaupt mit rect.left, rect.right gemacht wird...man zeichnet ja schließlich ein rechteck, aber wie das hier genau funzt versteh ich nicht....ich kenne nur rectangle(x1,y1,x2,y2);...könnt ihr mir vll schnell ne lösung sagen???

DeddyH 27. Jun 2008 15:10

Re: Zwei zellen quer verbinden
 
So schwer ist das ja nun auch wieder nicht. Da ich Deine Delphi-Version nicht kenne, hier mal die Online-Hilfe von Delphi 5 zum Ereignis OnDrawCell:
Zitat:

Das Ereignis OnDrawCell tritt ein, wenn eine Zelle des Gitters gezeichnet werden muß.

type
TDrawCellEvent = procedure (Sender: TObject; ACol, ARow: Longint; Rect: TRect; State: TGridDrawState) of object;
property OnDrawCell: TDrawCellEvent;

Beschreibung

Mit einer Ereignisbehandlungsroutine für OnDrawCell können Sie den Inhalt aller Zellen des Gitters anzeigen. Mit den Methoden der Eigenschaft Canvas können Sie die Zelle zeichnen. Der Parameter Rect beschreibt die Position der Zelle in der Zeichenfläche. Die Parameter Col und Row beschreiben den Zeilen- und Spaltenindex der Zelle, die gezeichnet werden soll. Der Parameter State gibt an, ob die Zelle den Eingabefokus hat, ob sie markiert ist und ob sie fixiert ist (in diesem Fall bleibt sie auch bei einem Bildlauf an ihrer Position).

Ist keine Ereignisbehandlungsroutine für OnDrawCell zugewiesen, werden alle Zellen des Gitters leer angezeigt. Hat die Eigenschaft DefaultDrawing den Wert True, wird der Hintergrund der Zelle angezeigt, bevor das Ereignis OnDrawCell eintritt. Nachdem die Ereignisbehandlungsroutine für OnDrawCell den Inhalt der Zelle gezeichnet hat, wird die markierte Zelle mit einem Fokusrechteck versehen. Wenn DefaultDrawing False ist, ist die Ereignisbehandlungsroutine für OnDrawCell für den Hintergrund der Zelle und für die visuelle Kennzeichnung von ausgewählten und fokussierten Zellen zuständig.

mkinzler 27. Jun 2008 15:14

Re: Zwei zellen quer verbinden
 
Ein TRect emthält die Koordinaten eines Rechteckes
Left ist also X1; Top Y1; Right X2; Bottom Y2

Razor90 27. Jun 2008 15:17

Re: Zwei zellen quer verbinden
 
und was würde das für mich bedeuten? hab die gleiche hilfe, kann damit aber nichts anfange...
rect:=rect.left[1],rect.right[2],rect.top[1],rect.bottom[1]....oda wie mach ich das???

mkinzler 27. Jun 2008 15:21

Re: Zwei zellen quer verbinden
 
Delphi-Quellcode:
Canvas.Rectangle( r.Left, r.Top, r.Right, r.Bottom);

Razor90 27. Jun 2008 15:23

Re: Zwei zellen quer verbinden
 
aber wo leg ich dann jetzt die koordinaten hin? oda bzw. wo geb ich die ein? habt ihr vll ein beispiel?

taaktaak 27. Jun 2008 15:29

Re: Zwei zellen quer verbinden
 
Moin, Moin.
Überlege doch einmal: Als Rect wird dir das "normale" Rechteck übergeben, das gezeichnet werden soll. Wenn du z.B. zur linken benachbarten Zelle verbinden willst, dann musst du Rect.Left also nach links verschieben. Genau um die Breite der linken Nachbarzelle und der Linienbreite zwischen den Zellen. Probier doch mal ein wenig ...

Razor90 27. Jun 2008 15:32

Re: Zwei zellen quer verbinden
 
so ein mist...ich kapier das nich...
Delphi-Quellcode:
begin

    if aRow=0 then
    if acol=2 then
   with sender as tstringgrid do begin

     rect:=rect.left+rect.right;
    Canvas.Brush.Color := clBtnFace;
    Canvas.Brush.Style := bsSolid;
    Canvas.FillRect( Rect );
  end;
  end;
falsche typen oda sowas meint er jetzt....was soll ich denn machen???


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 Uhr.
Seite 1 von 2  1 2      

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