Delphi-PRAXiS
Seite 1 von 2  1 2      

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 stringgrid Zellenrahmen (https://www.delphipraxis.net/53956-stringgrid-zellenrahmen.html)

Matthias-k 26. Sep 2005 12:06


stringgrid Zellenrahmen
 
hi leutz, ich weis, das crosspostings nicht gern gesehen sind, aber ich komm echt nich mehr weiter.

ich habe bereits im DF gepostet, doch dort kam leider keine reaktion.

der link zu dem topic ist folgender:

http://www.delphi-forum.de/topic_tms...den_48985.html

kann mir einer von euch da weiterhelfen?

wäre echt wichtig!

danke! matthias

Sharky 26. Sep 2005 13:33

Re: stringgrid Zellenrahmen
 
Hai Matthias,

Du erwartest aber jetzt nicht wirklich das ich eine Frage im DF lese um sie dann hier beantworten zu können?

Matthias-k 26. Sep 2005 14:34

Re: stringgrid Zellenrahmen
 
[original text aus dem DF]

ich benutze ein stringgrid zum anzeigen von daten.

die daten sind zeilenweise angeordnet.

zum einen weis ich nicht, wie ich meinem programm sagen kann, das nur mehrere zellen einer zeile gleichzeitig markiert werden können,
und wenn ich mehrere zellen nebeneinander mit dem gleichen inhalt habe, wie ich diese zellen zusammenhängend mit einem rahmen umranden kann!

lässt dich das überhaupt machen? ich kenn die tms komponenten nicht und bin dabei, sie zu testen! hat einer von euch nähere erfahrungen mit diesen kompos?

[end Originaltext aus dem DF]

So! Tschuldige bitte, das ich es mir erlaubt habe, ein Crossposting zu eröffnen!

matthias

marabu 26. Sep 2005 14:53

Re: stringgrid Zellenrahmen
 
Hi Matthias,

cross posting ist schlimm, wenn du deine Frage gleich in mehreren Rubriken der DP einstellst - was du machst, das ist etwas komplizierter, glaube ich.

Die von dir gewünschte Umrandung dürfte schwierig (bis unmöglich) sein, da ja nur das Zeichnen einzelner Zellen nach außen gereicht wird. Einfacher ist da sicher eine Einfärbung der Selektion. Auch verstehe ich nicht, ob du die Ausweitung der Selektion auf mehr als eine Zeile verhindern musst, oder ob es genügt die entsprechenden Actions zu deaktivieren, wenn der Selektionsblock mehr als eine Zeile enthält.

Grüße vom marabu

Matthias-k 26. Sep 2005 15:09

Re: stringgrid Zellenrahmen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi marabu,

die frage steht nicht in mehreren rubriken, sondern noch in einem anderen forum.

aber um zum thema zurückzukommen:

der user soll einen bestimmten bereich der zellen auswählen können! aber nur ein einer zeile! deshalb das verhindern der selektion von mehreren zeilen.

das komplette farbliche färben der zellen bringt mir insofern nichts, weil ich 2 zellbereiche nicht voneinander trennen kann!

ich versuche grad, da wir hier im besitz der sourcen des tms grids sind, den selektionsrahmen nachzuvollziehen.

dieser rahmen lässt sich optional zuschalten, screenshot ist angehängt.

das element hat keinen focus, die selektion bleibt aber erhalten! und so möchte ich es auch haben.

weil müller soll sich durch den rahmen von schulze trennen!

ich hoffe, ihr versteht, was ich mein!

matthias

marabu 26. Sep 2005 15:33

Re: stringgrid Zellenrahmen
 
Zitat:

Zitat von Matthias-k
die frage steht nicht in mehreren rubriken, sondern noch in einem anderen forum.

Diesen feinen Unterschied habe ich versucht herauszuarbeiten - entschuldige mein schlechtes Deutsch.

Was dein TMSGrid angeht, da kann ich dir nicht helfen, da ich keinen Zugriff auf diese (kommerzielle?) Komponente habe. Viel Erfolg.

marabu

ibp 26. Sep 2005 16:01

Re: stringgrid Zellenrahmen
 
muss es denn ein rahmen sein? zeichne doch die jeweiligen zellen im ondrawcell ereignis einfach mit einer anderen farbe!

etwa so z.b...mal ins blaue (höhö) getippt

Delphi-Quellcode:
procedure TForm1.StringGridDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);  
...
  if StringGrid.Cells[ACol,ARow]='Müller' then
  begin
    StringGrid.Canvas.Brush.Color := clBlue;
    StringGrid.Canvas.FillRect(Rect);
    DrawText(StringGrid.Canvas.Handle,pChar('Müller'),Length('Müller'),Rect,DT_Left);
  end;
...

ibp 26. Sep 2005 16:54

Re: stringgrid Zellenrahmen
 
Liste der Anhänge anzeigen (Anzahl: 1)
noch ne idee, erst eine zelle schwarz malen, dann mit einem kleineren rechteck nochmals übermalen!


Delphi-Quellcode:
procedure TForm1.StringGridDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  aRect:TRect;
  str:string;
begin
  str:='Müller';

  if (StringGrid.Cells[ACol,ARow]=str) then
  begin
    StringGrid.Canvas.Brush.Color := clBlack;
    StringGrid.Canvas.FillRect(Rect);
    StringGrid.Canvas.Brush.Color := clBlue;
    aRect.Left:=Rect.Left+2;
    aRect.Top:=Rect.Top+2;
    aRect.Right:=Rect.Right-2;
    aRect.Bottom:=Rect.Bottom-2;

    if ACol<StringGrid.ColCount then
      if (StringGrid.Cells[ACol+1,ARow]=str) then
        aRect.Right:=Rect.Right;
    if ACol>StringGrid.FixedRows then
      if (StringGrid.Cells[ACol-1,ARow]=str) then
        aRect.Left:=Rect.Left;

    StringGrid.Canvas.FillRect(aRect);
    DrawText(StringGrid.Canvas.Handle,
               pChar(str),
               Length(str),
               Rect,DT_Center or DT_VCENTER or DT_SINGLELINE);
  end;

end;
...du musst nur noch wenn die ganzen daten eingefügt wurden, dass grid neu zeichnen lassen...

Matthias-k 27. Sep 2005 07:52

Re: stringgrid Zellenrahmen
 
hi ibp,

eine komplett färbung der zellen ist nicht das, was ich brauche!

weil damit ist eine trennung der bereichen nicht möglich!

diese komplette färbung der zelle habe ich bereits drin, doch nach meiner meinung nach und nach der meinung mehrerer anderer will ich das jetzt anders lösen!

ich schau mir mal an, wie die selektion um die zellen gezeichnet wird.

matthias

//edit: tja, scheiße, wenn die message die gesammte nacht auf dem arbeitsrechner liegt, und man vergisst auf "absenden" zu gehn!
ich teste deine lösung mal, das schaut interesannt aus! vieleicht ist es das, was mich und die kunden zufrieden stellt!

ibp 27. Sep 2005 08:51

Re: stringgrid Zellenrahmen
 
oops habe tms nicht gelesen, habe die kompo auch seit letzter woch und bin gerade daran sie in ein projekt einzupassen.
schau dir doch mal diese events an, damit lässr sich bestimmt etwas machen....

Zitat:

property OnGetCellBorderProp: TGridBorderPropEvent read FOnGetCellBorderProp write FOnGetCellBorderProp;

Description

Event triggered to query the border pen settings for each border of a cell.

TAdvToolBar and TAdvMenus
Zitat:

Unit AdvGrid
TGridBorderPropEvent=procedure(Sender: TObject; ARow, ACol: Integer; LeftPen, TopPen, RightPen, BottomPen: TPen) of object;

TAdvToolBar and TAdvMenus
Zitat:

Event handler is called to set border style for each cell.

property OnGetCellBorder: TGridBorderEvent read FOnGetCellBorder write FOnGetCellBorder;

Description

Can be used to specify what cell borders must be displayed in the grid.

TCellBorder = (cbTop,cbLeft,cbRight,cbBottom);

TCellBorders = set of TCellBorder

TAdvToolBar and TAdvMenus

Zitat:

Unit AdvGrid
TGridBorderEvent=procedure(Sender: TObject; ARow, ACol: Integer; APen: TPen; var Borders: TCellBorders) of object;

TAdvToolBar and TAdvMenus


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