Bug im Grid - mit Lösung

Alles, was den Programmierer beschäftigt

Moderator: SYNERPY

Antworten
festus01
Beiträge: 515
Registriert: Di Okt 19, 2004 5:45 am
Wohnort: Diepholz

Bug im Grid - mit Lösung

Beitrag von festus01 »

Hallo Admin,

anscheinend gibt es da einen kleinen Bug mit Grids die in den Formularen vorhanden sind.
Es ist nicht möglich mit PgUp bzw PgDown Seitenweise durch ein Grid zu blättern.

Ich habe folgendes Formular entwickelt:

Bild

In diesem Grid sind im Moment ca. 600 Datensätze vorhanden.

Wird nun in diesem Fokussierten Grid eine der beiden o.g. Tasten betätigt erscheint dies als Resultat:

Bild

So, und nun das wichtigste - die Lösung:

Ursache für diese Verhalten ist in der Procedure TfrmBasis.FormKeyUp zu finden.
Hier wird einfach unter anderem der Keycode VK_NEXT, VK_PRIOR ausgewertet und die Procedure SucheFeldFocus aufgerufen,
die wiederum prüft q_1.State auf dssInsert oder dssEdit.
Da beim Seitenweise scrollen der Status auf dssBrowse steht wird o.g. Fehlermeldung ausgegeben.

Durch Abfragen, welche Komponenten den Fokus besitzt, kann dieser Fehler behoben werden.

Folgende Zeile, die in der Procedure TfrmBasis.FormKeyUp eingebaut wird, behebt das Problem:

Code: Alles auswählen

// Letzter Stand: 26.07.2007 by KDP
// KDP
if tForm(Sender).ActiveControl is TIB_Grid Then exit; // Feature nicht für Grids
OK, jetzt sind Sie wieder dran :wink:

PS: Ich wollte mich noch einmal nach dem Quellcode erkundigen. Siehe Mail vom 24.07.2007
MfG

KDP

----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Chique!

Interessant, was da draußen so programmiert wird.

Danke für den Bugfix!
miboe
Beiträge: 1295
Registriert: Fr Jul 28, 2006 9:13 am

Beitrag von miboe »

Die Maske ist ja der Hammer. Wenn ich die meinem Chef zeige, dann will er sowas auch :). Wäre es machbar, daß man die Maske und die dazugehörenden Teile (sofern notwendig) mal per Mail erhält? Hintergrund: Mein Chef ist ein Tabellenfreak und macht sich so eine Liste für seine Fertigungsaufträge selbst in Excel. Leider hat er die Angewohnheit, daß er dann zwar ab und zu munter in Excel an den FA's rumbiegt, zum Schluß dann aber nicht mehr alle Daten im Averp korrekt eingibt und sich dann über die Fehler wundert ... Mit so einer Übersichtsliste (vor allem mit Farbe) könnte ich ihn vielleicht dazu bringen, innerhalb von Averp zu bleiben :wink:

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,

vielen Dank für das Kompliment.
Schauen Sie doch mal hier:

http://forum.synerpy.de/viewtopic.php?t ... 3fb2ab105b


Leider ist da wohl kaum Resonanz gewesen, sonst hätte SynERPy das bestimmt schon übernommen. :wink:
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 »

Hm, ich bin mir nicht sicher, aber ich glaube in der letzten Beta hatte ich derartiges gesehen ... zumindest gab es da für Grids neue Eigenschaften, die mir vorher nie über den Weg gelaufen waren. Da muß ich also nochmal genauer nachschauen und damit weiß ich auch schon, was ich heute abend mache ... :)

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
peterw
Beiträge: 32
Registriert: Fr Jun 09, 2006 4:02 pm

Beitrag von peterw »

Hallo Festus und Michael,

das ist wirklich brauchbar und es gab deswegen keine große Resonanz, weil es hieß, daß es in der nächsten Version auftauchen soll.

Hallo Admin,

wenn es schon "eingebaut" wurde, wie kann man den Grid dann bunt machen?


Gruß
Peter
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Grids farbig machen zu können, ist bereits seit dem 9. Januar 2007 möglich. Aus der Doku:
OnDrawCellScript (neu seit 09.01.2007)
Dieses feldunabhängige Ereignis kann für ein Datengrid, welches direkt in einem Formular enthalten ist, eingesetzt werden. Hier können NUR Bedingungen für Cellfarben und -schriftart
eingetragen werden. Es können beliebig viele Bedingungen und beliebig viele Felder mit Bedingungen versehen werden.
Folgende Bedingungen sind zu beachten:
Als erstes muss das Feld der View, welches evtl. anders dargestellt werden soll in eckigen Klammern angegeben werden.
Dann folgt die Bedingung(en), wie diese auch im normalen PascalScript verwendet werden. Nur ist darauf zu achten, dass „BufferFieldByName“ statt „FieldByName“ verwendet wird. Die Farbe muss auf die globale Variable „sGridCellFarbe“ zugewiesen werden. Die Schriftart auf die gloabale Variable „sGridCellFont“.

Beispiel:
begin
[MESSUNG]
if (AsFloat(q_1.BufferFieldByName('MESSUNG')) = 0.0) then
begin
sGridCellFarbe := 'clWindow';
sGridCellFont := 'fsStrikeout';
end
else
if (AsFloat(q_1.BufferFieldByName('MESSUNG')) > (AsFloat(q_1.BufferFieldByName('BSQM_VORGABEWERT')) + AsFloat(q_1.BufferFieldByName('BSQM_TOLERANZ_MAX')))) then
begin
sGridCellFarbe := 'clBlue';
sGridCellFont := 'fsBold';
end
else
if (AsFloat(q_1.BufferFieldByName('MESSUNG')) < (AsFloat(q_1.BufferFieldByName('BSQM_VORGABEWERT')) + AsFloat(q_1.BufferFieldByName('BSQM_TOLERANZ_MIN')))) then
begin
sGridCellFarbe := 'clRed';
sGridCellFont := 'fsItalic';
end
else
begin
sGridCellFarbe := 'clGreen';
sGridCellFont := '';
end;

[BSQM_MESSBEZEICH]
if (AsString(q_1.BufferFieldByName('BSQM_MESSBEZEICH')) = 'Breite') then
begin
sGridCellFarbe := 'clGreen';
sGridCellFont := 'fsBold';
end;
end;

Unterstützte Fontstyles:
fsBold, fsItalic, fsUnderline, fsStrikeOut

Unterstützte Farben:
clAqua, clBlack, clBlue, clDkGray, clFuchsia, clGray, clGreen, clLime, clLtGray ,clMaroon ,clNavy ,clOlive ,clPurple ,clRed ,clSilver ,clTeal ,clWhite ,clYellow


WICHTIG: Jeder Abschnitt (d.h. Bedingung für ein Feld wird separiert.
Daher ist definierte Variablen auch nur innerhalb des Abschnitts nach der Felddefinition [Feld] bekannt.
festus01
Beiträge: 515
Registriert: Di Okt 19, 2004 5:45 am
Wohnort: Diepholz

Beitrag von festus01 »

Hallo Admin,

erst mal vielen Dank für diese hilfreiche Information.

Ich war gerade dabei den Quelltext zu studieren um zu sehen wie die neue Funktion eingesetzt wird.

Allerdings muss ich doch noch folgendes Anmerken:

Bevor ich hier geschrieben hatte das dieses Feature nicht implementiert worden ist, habe ich natürlich in der Doku nachgesehen.
Leider steht in meiner Doku kein Wort davon, und die ist von letzter Woche :?:

Das Erstelldatum der PDFs ist allerdings vom 11.08.2006 :!:

Könnten Sie da mal schauen ob ich die neueste Doku habe :?:
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 Admin,

vielen Dank für die Doku von dem Pascal Interpreter.

Ich habe jetzt die neue Version getestet und mein obiges Grid
sieht jetzt so aus:

Bild

Leider entspricht das nicht meinen Vorstellungen. Wie wäre es wenn man noch eine Variable belegen könnte (z.B. rowcolor)
die auf true oder false steht und bei true würde man die ganze Zeile in der Farbe darstellen :?:

Es tut mir leid das ich immer was zu meckern habe und mit nichts zufrieden bin :wink:
MfG

KDP

----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Doku gesendet.
SYN17
Beiträge: 79
Registriert: Do Feb 16, 2006 8:10 am

RE

Beitrag von SYN17 »

Danke !
Ist in der nächsten AvERP.EXE - Version korrigiert.
miboe
Beiträge: 1295
Registriert: Fr Jul 28, 2006 9:13 am

Beitrag von miboe »

Hallo,

wie war denn jetzt die Lösung zum Färben einer kompletten Zeile. Ich habe das in der Averp 3.0.0.23 und passender AverpDesign gerade nochmal probiert mit dem Code fürs OnDrawCellScript und da wird in meinem Grid auch nur das Feld bunt. Der Rest der Zeile aber nicht.

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: ...
Der Rest der Zeile aber nicht.
...
leider haben Sie Recht. Im Quellcode der letzten Version sind für diese Sache keine Änderungen vorgenommen worden und so musste ich meine "Version" der Griddarstellung wieder einbauen.

Wenn vielleicht mehr Anwender Interesse zeigen würden, baut SynERPy dieses Feature evtl. ein. 8)
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 »

Hm, ich habe das heute mal nochmal probiert und nach dem Schema von Synerpy über die einzelnen Felder eines Grid mit 7 Spalten die komplette Zeile eingefärbt. Das ist dann ein ganz brutaler Performance-Killer. Man kann dem Grid fast dabei zusehen, wie er beim Scrollen jeweils komplett neu aufgebaut wird. :evil:

Wäre es denn möglich daß ich Ihre AVerp.exe mal zum testen erhalte ob mir das besser gefällt? Ich gehe davon aus, daß ansonsten ja nichts geändert wurde.

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: Wäre es denn möglich daß ich Ihre AVerp.exe mal zum testen erhalte ob mir das besser gefällt? Ich gehe davon aus, daß ansonsten ja nichts geändert wurde.
das wäre kein Problem, allerdings müsste SynERPy dazu erst das OK geben.

Entweder Sie setzen sich mit SynERPy in Verbindung oder Admin liest diesen Thread und gibt seine Meinung dazu.

Allerdings wären die geänderten Dinge wieder verschwunden wenn man wieder das Original von SynERPy nutzen möchte,
was ich dringendst empfehlen würde.

Ich versuche mit meinen Änderungen immer so nah wie möglich am Original zu bleiben um auch die Updates von SynERPy nutzen zu können.

Wenn Sie selbst die Möglichkeit hätten zu programmieren könnte ich die Änderungen hier posten.
MfG

KDP

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