![]() |
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: ![]() kann mir einer von euch da weiterhelfen? wäre echt wichtig! danke! matthias |
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? |
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 |
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 |
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 |
Re: stringgrid Zellenrahmen
Zitat:
Was dein TMSGrid angeht, da kann ich dir nicht helfen, da ich keinen Zugriff auf diese (kommerzielle?) Komponente habe. Viel Erfolg. marabu |
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; ... |
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:
...du musst nur noch wenn die ganzen daten eingefügt wurden, dass grid neu zeichnen lassen...
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; |
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! |
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:
Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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