Bug im Grid - mit Lösung
Moderator: SYNERPY
-
- Beiträge: 1295
- Registriert: Fr Jul 28, 2006 9:13 am
-
- Site Admin
- Beiträge: 2673
- Registriert: Di Feb 10, 2004 5:48 am
- Wohnort: Bayreuth
Wir hatten uns die Entwicklung von festus vor einiger Zeit schon angeschaut. Allerdings war da etwas, dass uns dazu gebracht hat, die Änderungen so nicht zu übernehmen - ist schon ein oder mehrere Jahre her, daher nicht mehr ganz so frisch.
Gegen das Weiterreichen der exe haben wir natürlich keine Einwände.
Gegen das Weiterreichen der exe haben wir natürlich keine Einwände.
-
- Beiträge: 515
- Registriert: Di Okt 19, 2004 5:45 am
- Wohnort: Diepholz
Hallo,
OK das wäre kein Problem, aber dazu benötigt man auch den AvERP-Designer um die Funktion entsprechend einzusetzen.
Beispiel:
Es wird eine Maske mit einem Grid im Designer geöffnet.
Mit einem Rechtsclick auf dem Grid wird der Objectinspector aufgerufen.
Mit einem weitereren Rechtsclick wird jetzt das zusätzliche Event onGetCellPropsScript ausgewählt.
Die Syntax ist folgendermaßen aufgebaut:
Kein Begin / End - Es geht sofort mit den Anweisungen los.
Zeile 1:
Hat das Feld status der verbundenen View den Wert 3, so wird die Zeile des Grids mit dem Wert 16768648 dargestellt, was einem Hellblau entspricht.
Zeile 2:
Hat das Feld den Wert 4, so wird die Zeile des Grids in der Farbe clWhite dargestellt.
usw.
Wie man sieht hat man mehrere Möglichkeiten den Farbwert zu bestimmen, entweder als dezimalen Wert oder als Konstante wie sie in Delphi hinterlegt sind.
Nach Abspeichern und Aufrufen der Maske sollte das Grid dann so oder ähnlich aussehen:
Ich habe das hier so gelöst:
Wird die Spalte M-OK mit J belegt, so wird im Update Trigger das Feld Status auf 5 gesetzt:
So, und nun das wichtigste, die Programme:
AvERP.EXE
AvERPDesign.EXE
Viel Spaß damit.
Über ein feedback würde ich mich sehr freuen.
OK das wäre kein Problem, aber dazu benötigt man auch den AvERP-Designer um die Funktion entsprechend einzusetzen.
Beispiel:
Es wird eine Maske mit einem Grid im Designer geöffnet.
Mit einem Rechtsclick auf dem Grid wird der Objectinspector aufgerufen.
Mit einem weitereren Rechtsclick wird jetzt das zusätzliche Event onGetCellPropsScript ausgewählt.
Die Syntax ist folgendermaßen aufgebaut:
Kein Begin / End - Es geht sofort mit den Anweisungen los.
Zeile 1:
Hat das Feld status der verbundenen View den Wert 3, so wird die Zeile des Grids mit dem Wert 16768648 dargestellt, was einem Hellblau entspricht.
Zeile 2:
Hat das Feld den Wert 4, so wird die Zeile des Grids in der Farbe clWhite dargestellt.
usw.
Wie man sieht hat man mehrere Möglichkeiten den Farbwert zu bestimmen, entweder als dezimalen Wert oder als Konstante wie sie in Delphi hinterlegt sind.
Nach Abspeichern und Aufrufen der Maske sollte das Grid dann so oder ähnlich aussehen:
Ich habe das hier so gelöst:
Wird die Spalte M-OK mit J belegt, so wird im Update Trigger das Feld Status auf 5 gesetzt:
Code: Alles auswählen
CREATE OR ALTER TRIGGER BMPLAN_BU0 FOR BMPLAN
ACTIVE BEFORE UPDATE POSITION 0
AS
declare variable sJa Varchar(1);
declare variable sNein Varchar(1);
begin
/* Protokollieren, das Aktion hier durchgelaufen ist */
/* Letzter Stand: 25.07.2007 15:13:38 by KDP */
/* Status anpassen wegen farbigen Grid */
/* Letzter Stand: 14.08.2007 16:42:09 by KDP */
/* Feld Stop hinzugefügt */
if (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('BMPlan_BU0');
Execute Procedure p_bfirma_janein returning_values (:sJa, :sNein);
if (new.gespeichert <> old.gespeichert) then exception keine_aenderung;
new.benutzer = USER;
new.gespeichert = 'NOW';
if (new.stop = 'X') then new.status = 7; else /* Lila */
if ((new.planungok = :sJa) and (new.masternotok = 'S') and (new.gemastertok = 'B')) then new.status = 7; else /* Lila */
if ((new.planungok = :sJa) and (new.gemastertok = 'B')) then new.status = 4; else /* Weiss */
if (new.charge = 0) then new.status = 1; else /* Gelb */
if ((new.planungok = :sJa) and (new.gemastertok = :sJa)) then new.status = 5; else /* grün */
if ((new.planungok = :sJa) and (new.masternotok = 'X')) then new.status = 6; else /* Rot */
if ((new.planungok = :sJa) and (new.masternotok = 'S')) then new.status = 7; else /* Lila */
if ((new.marker = 'X') and ((new.gemastertok <> :sJa) or (new.gemastertok is null))) then new.status = 3; else /* Blau */
if (new.planungok = :sJa) then new.status = 2; else /* Türkis */
new.status = 0; /* keine Farbe */
end
AvERP.EXE
AvERPDesign.EXE
Viel Spaß damit.
Über ein feedback würde ich mich sehr freuen.
MfG
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
-
- Beiträge: 1295
- Registriert: Fr Jul 28, 2006 9:13 am
Danke, funktioniert beides und auch mit guter Performance. Trotzdem noch eine Frage: wie schalte ich denn die gestreiften Grids ab, damit ich auch die Farben korrekt sehe und nicht die grauen Zwischenzeilen habe?
Gruß
Michael
Gruß
Michael
Nur wer das Unmögliche versucht, wird das Machbare erreichen!
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
-
- Beiträge: 515
- Registriert: Di Okt 19, 2004 5:45 am
- Wohnort: Diepholz
Hallo Michael,
dazu einfach die Farbe des Grids auf die gleiche Farbe wie die grauen Zeilen stellen (clSilver), damit wird das grau unsichtbar.miboe hat geschrieben: Trotzdem noch eine Frage: wie schalte ich denn die gestreiften Grids ab, damit ich auch die Farben korrekt sehe und nicht die grauen Zwischenzeilen habe?
MfG
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
-
- Beiträge: 1295
- Registriert: Fr Jul 28, 2006 9:13 am
Also darauf muß man auch erst mal kommen ... ich vermute, daß ich dann aber den Zellen die eigentlich keine Farbe (also weiß) haben sollen, auch gezielt das clWhite über die Erweiterung zuordnen muß
Gruß
Michael
Gruß
Michael
Nur wer das Unmögliche versucht, wird das Machbare erreichen!
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
-
- Beiträge: 1295
- Registriert: Fr Jul 28, 2006 9:13 am
Und dann doch noch eine Frage: Welchen Datentyp darf eigentlich die auszuwertende Spalte enhalten? Geht auch sowas wie
oder gehen nur Integer und Varchar(1)
Nochmal Gruß
Michael
Code: Alles auswählen
Bez=Wareneingang=clGreen
Nochmal Gruß
Michael
Nur wer das Unmögliche versucht, wird das Machbare erreichen!
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
-
- Beiträge: 515
- Registriert: Di Okt 19, 2004 5:45 am
- Wohnort: Diepholz
Hallo Michael,
Ich glaube ich habe das so programmiert das auch Inhalte, also Ihr Beispiel gehen sollte.
Ich schaue mir das am Montag einmal an und poste eine Antwort.
das kann ich im Moment so nicht sagen, da müsste ich mir den Quelltext noch einmal ansehen.miboe hat geschrieben:Und dann doch noch eine Frage: Welchen Datentyp darf eigentlich die auszuwertende Spalte enhalten? Geht auch sowas wieoder gehen nur Integer und Varchar(1)Code: Alles auswählen
Bez=Wareneingang=clGreen
Ich glaube ich habe das so programmiert das auch Inhalte, also Ihr Beispiel gehen sollte.
Ich schaue mir das am Montag einmal an und poste eine Antwort.
MfG
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
-
- Beiträge: 515
- Registriert: Di Okt 19, 2004 5:45 am
- Wohnort: Diepholz
Hallo Michael,
das lies mir dann doch keine Ruhe. Ich hab mir den Quelltext angesehen und es ist so wie ich es mir gedacht habe.
Es wird der Feldwert mit dem 2. Wert aus dem Script-Editor verglichen und wenn die gleich sind wird der 3. Wert als Farbe für die aktuelle Zeile dargestellt.
Ich hoffe es ist jetzt alles klar
das lies mir dann doch keine Ruhe. Ich hab mir den Quelltext angesehen und es ist so wie ich es mir gedacht habe.
Es wird der Feldwert mit dem 2. Wert aus dem Script-Editor verglichen und wenn die gleich sind wird der 3. Wert als Farbe für die aktuelle Zeile dargestellt.
Ich hoffe es ist jetzt alles klar
MfG
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.