Unterschiedlich farbige Gridlinien

Für Fragen von Einsteigern und Programmieranfängern...
aldicek
Beiträge: 37
Registriert: Do 6. Mär 2008, 12:48
OS, Lazarus, FPC: WinXP/Mint13KDE (Lazarus 1.0.8 FPC 2.6.2)
CPU-Target: 64 Bit
Wohnort: Halle (Saale)

Unterschiedlich farbige Gridlinien

Beitrag von aldicek »

Hallo Forumsgemeinde!

Ich schlage mich mit folgendem Problem herum: Ich möchte in einem Stringgrid zur Datenvisualisierung zur Abwechslung mal nicht die Zellen sondern die Zelllinien (Gridlines) färben, aber (das wäre zu einfach) nicht alle in der gleichen Farbe. (Hintergrund: Darstellung der 3x3-Trennlinien für ein Sudoku-Programm.)
Frage: Führt irgend ein Weg an der Laufzeiterzeugung einer geerbten Variante von String-/oder Drawgrid vorbei, in der ich zumindest Paint überschreiben muss? (Ich hatte bereits etliche Varianten in einer eigenen DrawCell-Routine probiert, aber nachdem ich mir die Implementation von CustomGrid angesehen habe, weiß ich, dass ja erst DrawCell und anschließend DrawBorder ausgeführt wird, was meinen Versuch, diese Linien innerhalb von DrawCell andersfarbig darzustellen im Nachhinein wieder kaputt korrigiert.
Hatte schon einmal jemand an dieser Front zu kämpfen? Wenn ja, wie ist sie/er vorgegangen?
In meiner ersten Programmversion habe ich es auf oben beschriebene Variante (zur Laufzeit erzeugtes eigenes Grid mit eigenem Paint (hier werden die Gridlinien gezeichnet) u. eigener DrawCell (Darstellung des Rests der Zelle)) gemacht, aber vielleicht gibt es ja auch andere (vllt. sogar einfachere) Wege?

Was auch immer Ihr zu schreiben habt, jede Meinung ist willkommen
Aldicek

Benutzeravatar
theo
Beiträge: 11004
Registriert: Mo 11. Sep 2006, 19:01

Re: Unterschiedlich farbige Gridlinien

Beitrag von theo »

Vielleicht kann KGrid sowas? Ich weiss es nicht.
http://www.tkweb.eu/en/delphicomp/kgrid.html" onclick="window.open(this.href);return false;

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Unterschiedlich farbige Gridlinien

Beitrag von mse »

Ich sage es zwar gar nicht gerne, aber MSEgui Datengitter können das. ;-)

Code: Alles auswählen

procedure tmainfo.createexe(const sender: TObject);
begin
 with grid do begin
  rowlinewidth[3]:= 3;
  rowlinecolorstate[3]:= 0;
  rowheight[4]:= 30;
  rowlinewidth[4]:= 3;
  rowlinecolorstate[4]:= 0;
 end;
end;
Alles mit MSEgui Bordmitteln.

Martin
grid.png
grid.png (62.55 KiB) 2874 mal betrachtet

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Unterschiedlich farbige Gridlinien

Beitrag von Socke »

mse hat geschrieben:Ich sage es zwar gar nicht gerne, aber MSEgui Datengitter können das. ;-)
Wenn ich deine Beiträge hier im Forum ein wenig zusammenfassen darf: Mit MSEgui kann man wunderbar seine eigene Oberfläche gestalten. Mit Lazarus erreicht man hingegen eine bessere Integration in die vorhanden Umgebung.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Unterschiedlich farbige Gridlinien

Beitrag von mse »

Socke hat geschrieben:Mit MSEgui kann man wunderbar seine eigene Oberfläche gestalten. Mit Lazarus erreicht man hingegen eine bessere Integration in die vorhanden Umgebung.
Das dürfte in etwa stimmen. Für mich ist allerdings wichtiger, dass MSEgui Bedieneroberflächen überall gleich funktionieren, sich deren Funktionen bis ins Detail definieren lassen und damit die Konstruktion hochwertiger GUI's ermöglicht. Zudem ist die Fehleranfälligkeit durch den Verzicht auf die Einbindung sich ständig verändernder Fremd-widgetsets kleiner und die Produktivität ist grösser, da man sich nicht um die bei Lazarus leider immer bestehenden "kleinen Unterschiede" zwischen den Plattformen kümmern muss.

Martin

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Unterschiedlich farbige Gridlinien

Beitrag von Socke »

mse hat geschrieben:Für mich ist allerdings wichtiger, dass MSEgui Bedieneroberflächen überall gleich funktionieren, sich deren Funktionen bis ins Detail definieren lassen und damit die Konstruktion hochwertiger GUI's ermöglicht.
Nur sehe ich aus der Praxis, dass hochwertige GUIs sehr arbeitsintensiv sind (Usability und nicht einfach nur zusammengeklickt) und daher auch recht selten sind. Vor allem sind viele oder sogar die meißten Programmierer nicht unbedingt mit Usability vertraut oder sind ausgebildete (Hobby-)Grafiker, die das Potential ausnutzen könnten.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Unterschiedlich farbige Gridlinien

Beitrag von mse »

Einverstanden.
MSEide+MSEgui richtet sich auch nicht in erster Linie an Hobby-Programmierer. Es spricht nichts dagegen, dass auch Hobby-Programmier ein professionelles Werkzeug benutzen können. Man muss ja nicht alle Möglichkeiten ausschöpfen wenn es nicht notwendig ist. Die Kosten sind ja bei MSEide+MSEgui kein Problem. :-)

Martin

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Unterschiedlich farbige Gridlinien

Beitrag von pluto »

Es gab doch auch mein ein GUI Desinger für MS IDE oder nicht?

Klar ein paar Zeilen Code wird man immer schreiben müssen. Ist bei meinen GUI'S auch der Fall.Aber dafür wird auch was geboten.

Teilweise geht das auch mit Lazarus. Z.B. kann man ja selbst RC Dateien einbinden(habe ich mal gemacht). Somit konnte ich meiner Anwendung ein anders aussehen geben, als es Vorgesehen war.
Vielleicht gibt es hier für weitere Möglichkeiten.

Mehr Leistung muss auch bezahlt werden, in diesen Fall mit mehr Arbeit und mehr Zeitaufwand. Oder so:
Delphi und Lazarus sind IDE für "mal" eben schnell(Wenn es um Oberflächen geht)... Aber man kann auch wunderbar Programmieren. Tue ich z.b. fast jeden Tag. Zur Zeit mein Game-Maker Projekt.

Aber wir kommen von der eigentlichen Frage an. Klar können andere Werkzeuge es besser als Lazarus. Ich selbst nutzte es sehr ungerne wenn es darum geht Komplexe Oberflächen zu erstellen. Das ist einfach zu Träge und umständlich und Fehler Anfällig. Aber was sollst...Die meisten nutzen ja auch Windows... trotzt der vielen Vieren und anderen Gefahren....
MFG
Michael Springwald

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Unterschiedlich farbige Gridlinien

Beitrag von mse »

pluto hat geschrieben:Es gab doch auch mein ein GUI Desinger für MS IDE oder nicht?
???
Was meinst du damit?

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Unterschiedlich farbige Gridlinien

Beitrag von pluto »

Was meinst du damit?
Um Fenster zusammen Klicken zu können. Darum geht es doch....
MFG
Michael Springwald

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Unterschiedlich farbige Gridlinien

Beitrag von mse »

Dafür ist MSEide zuständig. MSEide kann auch mit inherited forms und frames umgehen, was im professionellen Umfeld wichtig ist.
mseide.png

aldicek
Beiträge: 37
Registriert: Do 6. Mär 2008, 12:48
OS, Lazarus, FPC: WinXP/Mint13KDE (Lazarus 1.0.8 FPC 2.6.2)
CPU-Target: 64 Bit
Wohnort: Halle (Saale)

Re: Unterschiedlich farbige Gridlinien

Beitrag von aldicek »

Hallo an alle Beitragsschreiber!

Erst mal herzlichen Dank für die rege Beteiligung. Ich wollte hier eigentlich keine Grundsatzdiskussion "MSEide Pro und Kontra" entfachen. Es mag sein, dass diese eine meiner Anforderungen an die Komponente mit diesem Framework realisierbar ist, aber es handelt sich hier wie bereits am Anfang dargelegt um die Verbesserung eines bereits angearbeiteten Projekts (sozusagen Version 0.7xx nach Version 0.6.0.9 (von der ich voller Stolz sagen kann, dass sie (bisher zumindest) jedes klassische Sudoku lösen kann, auch die mit nur 17 vorgefüllten Feldern)) und da ich noch nie mit dem MSEide-Framework gearbeitet habe und mich als Gelegenheitsprogrammierer auch etwas schwer tue (weiterhin hat meine Version 0.6.0.9 bereits ca. 4000 Zeilen Quellcode - davon ca. 1000 die GUI betreffend) wird mir dadurch meine Faulheitsentscheidung bezüglich strikter LCL-Verwendung ziemlich erleichtert. Trotzdem Danke für den Tipp! Falls ich irgendwann einmal v 0.8 in Angriff nehme, werde ich dieses Framework auf jeden Fall einer genaueren Prüfung unterziehen.
Dürfte ich vielleicht auch die geschätzten Meinungen der Diskussionspartner zur Kernfrage erfahren, ob es noch andere Möglichkeiten gibt, einer TStringGrid-Komponente eine eigene Paint-Methode zu verpassen, ohne sie vorher als eigene Komponente abzuleiten und zur Laufzeit "zu Fuß" erstellen zu müssen? (Ich hatte auch schon über eine komplett eigene Implementation (z.B. über tabellenförmig angeordnete Shapes oder dergleichen) nachgedacht, aber angesichts der Anforderungen, die sich an die Komponente stellen werden, den Aufwand im Vergleich zum Nutzen als zu groß eingeschätzt, zu vielfältig sind die Möglichkeiten der LCL-Grid-Komponente, von denen ich auch einige recht intensiv nutze.

Danke
Aldi

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Unterschiedlich farbige Gridlinien

Beitrag von pluto »

Ach es geht um ein Sudoku Spiel? Dafür würde ich mir ein eigenes Raster erstellen bzw. Zeichnen. Das ist auch ganz einfach.
Man nehme einfach ein 2D Array. Das sind ein paar Zeilen code.Das Anklicken der Felder ist auch ganz einfach. Du könntest dann einfach ein Input Dialog kommen lassen, wo man eine Zahl eingeben könnte.
Damit hast du die meisten Möglichkeiten. Ohne viel ändern zu müssen.

Ich weiß gar nicht warum, die Komponenten immer Missbraucht werden für andere Zwecke...

edit01:
@mse mir sind es einfach viel zu viele Fenster... mach doch mal daraus eine MDI Anwendung oder nur ein Fenster...
MFG
Michael Springwald

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Unterschiedlich farbige Gridlinien

Beitrag von mse »

pluto hat geschrieben: @mse mir sind es einfach viel zu viele Fenster... mach doch mal daraus eine MDI Anwendung oder nur ein Fenster...
Etwa so?
mseide1.png
Das wäre dann docking, in MSEide frei konfigurierbar. MDI ist wieder etwas anderes. Wobei die verschiedenen panels schon ihre Berechtigung haben.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Unterschiedlich farbige Gridlinien

Beitrag von pluto »

Schon besser. Mir kommt es aber immer noch Überlagen und recht durcheinander vor. Vielleicht Täuscht das auch...
MFG
Michael Springwald

Antworten