Bug im Grid - mit Lösung

Alles, was den Programmierer beschäftigt

Moderator: SYNERPY

Antworten
miboe
Beiträge: 1295
Registriert: Fr Jul 28, 2006 9:13 am

Beitrag von miboe »

Danke für das Angebot, ich warte aber mal noch, ob sich von Synerpy nochmal jemand hier im Thread meldet.

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
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

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.
A.Hirte
Beiträge: 21
Registriert: Fr Okt 05, 2007 11:52 am

Beitrag von A.Hirte »

Mich würde die Exe auch Interessieren, wäre echt nett wenn du per Mail die mal rüberschicken könntest oder irgendwo hochlädst.
miboe
Beiträge: 1295
Registriert: Fr Jul 28, 2006 9:13 am

Beitrag von miboe »

Jepp, meine Mailadresse finden Sie in meinem Profil ...
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
festus01
Beiträge: 515
Registriert: Di Okt 19, 2004 5:45 am
Wohnort: Diepholz

Beitrag von festus01 »

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.

Bild

Die Syntax ist folgendermaßen aufgebaut:


Bild

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:

Bild

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
So, und nun das wichtigste, die Programme:

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.
miboe
Beiträge: 1295
Registriert: Fr Jul 28, 2006 9:13 am

Beitrag von miboe »

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
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
festus01
Beiträge: 515
Registriert: Di Okt 19, 2004 5:45 am
Wohnort: Diepholz

Beitrag von festus01 »

Hallo Michael,
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?
dazu einfach die Farbe des Grids auf die gleiche Farbe wie die grauen Zeilen stellen (clSilver), damit wird das grau unsichtbar.
MfG

KDP

----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
miboe
Beiträge: 1295
Registriert: Fr Jul 28, 2006 9:13 am

Beitrag von miboe »

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
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
miboe
Beiträge: 1295
Registriert: Fr Jul 28, 2006 9:13 am

Beitrag von miboe »

Und dann doch noch eine Frage: Welchen Datentyp darf eigentlich die auszuwertende Spalte enhalten? Geht auch sowas wie

Code: Alles auswählen

Bez=Wareneingang=clGreen
oder gehen nur Integer und Varchar(1)

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
festus01
Beiträge: 515
Registriert: Di Okt 19, 2004 5:45 am
Wohnort: Diepholz

Beitrag von festus01 »

Hallo Michael,
miboe hat geschrieben:Und dann doch noch eine Frage: Welchen Datentyp darf eigentlich die auszuwertende Spalte enhalten? Geht auch sowas wie

Code: Alles auswählen

Bez=Wareneingang=clGreen
oder gehen nur Integer und Varchar(1)
das kann ich im Moment so nicht sagen, da müsste ich mir den Quelltext noch einmal ansehen.
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.
festus01
Beiträge: 515
Registriert: Di Okt 19, 2004 5:45 am
Wohnort: Diepholz

Beitrag von festus01 »

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 :D
MfG

KDP

----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
Antworten