![]() |
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. |
Re: Zwei zellen quer verbinden
Schau nochmal im
![]() |
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???
|
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:
|
Re: Zwei zellen quer verbinden
Ein TRect emthält die Koordinaten eines Rechteckes
Left ist also X1; Top Y1; Right X2; Bottom Y2 |
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??? |
Re: Zwei zellen quer verbinden
Delphi-Quellcode:
Canvas.Rectangle( r.Left, r.Top, r.Right, r.Bottom);
|
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?
|
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 ... |
Re: Zwei zellen quer verbinden
so ein mist...ich kapier das nich...
Delphi-Quellcode:
falsche typen oda sowas meint er jetzt....was soll ich denn machen???
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; |
Re: Zwei zellen quer verbinden
In Rect.Left steht die X-Position der linken oberen Ecke, in Rect.Right die der rechten unteren Ecke. Willst Du also die Breite verdoppeln, hieße das:
X2 = X2 + (X2 - X1) |
Re: Zwei zellen quer verbinden
Also so klappt das jetzt schon, aber zwischen den Zellen is noch ein kleiner Strich, was hab ich noch fürn Fehler drin?
Delphi-Quellcode:
begin
if aRow=0 then if acol=1 then with sender as tstringgrid do begin Rect.right := Rect.right + (Rect.right-rect.left); Canvas.Brush.Color := clBtnFace; Canvas.Brush.Style := bsSolid; Canvas.FillRect( Rect ); end; end; |
Re: Zwei zellen quer verbinden
ich komm nicht weiter :wall: :x könnt ihr mir bitte weiterhelfen? nur schnell den code und das wars schon ^^
|
Re: Zwei zellen quer verbinden
Wenn du 2 Spalten hast ist das linke Ecke, das der 1. Spalte und das Rechte Eck, das der 2. Spalte
|
Re: Zwei zellen quer verbinden
ja das weiß ich ja...wie die aufteilung ist oben links ist x1und y2 und unten rechts x2 und y2...aber wie mach ich daraus eine spalte??
|
Re: Zwei zellen quer verbinden
Wie im Beispiel gestern, in dem du statt des übergebenen rechteck der 1. Spalte das erweiterte Rechteck über beide Spalten selbst zeichnest
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz