DBedit / TBrowse Einzelne Zeilen einfärben
Moderator: Moderatoren
DBedit / TBrowse Einzelne Zeilen einfärben
Hi Leute,
ich mal wieder,
gibts eine möglichkeit einzelne Zeilen Fest einzufärben? Also anhand eines Datenbankfeldes?
Mein Ansatz wäre: Ich Modifiziere das TBrowse Objekt so das er beim einfügen einer Zeile zuerst schaut ob das besagte DB Feld .t. oder .f. hat. Dann die Farbe setzen und alles wird Prima...
Es geht darum das eine Auftragsdatenbank besteht und die erledigten Aufträge nur mit einer Flag Markiert werden(Feld) und nicht aus der Datenbank verschwinden. Das hat Revisionstechnische gründe.
grüsse euer Anfänger
ich mal wieder,
gibts eine möglichkeit einzelne Zeilen Fest einzufärben? Also anhand eines Datenbankfeldes?
Mein Ansatz wäre: Ich Modifiziere das TBrowse Objekt so das er beim einfügen einer Zeile zuerst schaut ob das besagte DB Feld .t. oder .f. hat. Dann die Farbe setzen und alles wird Prima...
Es geht darum das eine Auftragsdatenbank besteht und die erledigten Aufträge nur mit einer Flag Markiert werden(Feld) und nicht aus der Datenbank verschwinden. Das hat Revisionstechnische gründe.
grüsse euer Anfänger
Über 4.000.000 Menschen hören Hiphop. Schreib dich nicht ab, lern reden und gehen.
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: DBedit / TBrowse Einzelne Zeilen einfärben
Hi,
schau mal unter TBrowse():colorRect() das kannst du bestimmt so einstellen, dass es die Zeile je nach Inhalt einfärbt.
So habe ich meine Cursorzeile komplett eingefärbt (statt nur dem Cursorfeld) :
schau mal unter TBrowse():colorRect() das kannst du bestimmt so einstellen, dass es die Zeile je nach Inhalt einfärbt.
So habe ich meine Cursorzeile komplett eingefärbt (statt nur dem Cursorfeld) :
Code: Alles auswählen
otab:colorRect( {otab:rowpos,1,otab:rowpos,otab:colcount}, {2,3} ) // Cursorzeile hervorheben
t := inkey(0)
otab:colorRect( {otab:rowpos,1,otab:rowpos,otab:colcount}, {1,2} ) // Cursorzeile auf Standard !
Gruß
Hubert
Hubert
Re: DBedit / TBrowse Einzelne Zeilen einfärben
wo setzt man das?? in der DBedit Funktion?
Über 4.000.000 Menschen hören Hiphop. Schreib dich nicht ab, lern reden und gehen.
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: DBedit / TBrowse Einzelne Zeilen einfärben
Hi,
ich arbeite nicht mit DBEDIT(), was selbst ja aus TBrowse() zusammengebaut wurde.
Ich rufe es nach stabilize auf, da dann die Daten ruhig stehen, aber du müsstest im Prinzip wissen welcher
Datensatz wo angezeigt wird und danach dann den Färbungsbereich ermitteln. ODER ?
Ich nutze ja GUI und dort gibt es XbpBrowse() dessen Spalten mit XbpColumn() erstellt werden,
und diese nutzen XbpColumn():colorBlock zur Einfärbung je nach Zellinhalt.
Und das gibt es auch unter TBrowse (man ist das lange her ... )
ich arbeite nicht mit DBEDIT(), was selbst ja aus TBrowse() zusammengebaut wurde.
Ich rufe es nach stabilize auf, da dann die Daten ruhig stehen, aber du müsstest im Prinzip wissen welcher
Datensatz wo angezeigt wird und danach dann den Färbungsbereich ermitteln. ODER ?
Ich nutze ja GUI und dort gibt es XbpBrowse() dessen Spalten mit XbpColumn() erstellt werden,
und diese nutzen XbpColumn():colorBlock zur Einfärbung je nach Zellinhalt.
Und das gibt es auch unter TBrowse (man ist das lange her ... )
das passt besser zu deiner Aufgabe.TBColumn():colorBlock Farbe einer Tabellenspalte in Abhängigkeit des anzuzeigenden Werts ändern.
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: DBedit / TBrowse Einzelne Zeilen einfärben
wie Hubert schon sagte ist ein DBEDIT() in Xbase++ ein Tbrowse().denjo303 hat geschrieben:wo setzt man das?? in der DBedit Funktion?
kopiere c:\ALASKA\XPPW32\Source\SYS\dbedit.prg in dein Projekt Verzeichniss und modifiziere es so
Code: Alles auswählen
/*
* TBrowse ist stabil
*/
IF oTBrowse:stable
IF MyDBF->Color = .T.
oTBrowse:COLORRECT({oTBrowse:ROWPOS, 1, oTBrowse:ROWPOS, oTBrowse:COLCOUNT}, {5, 5})
ELSE
oTBrowse:COLORRECT({oTBrowse:ROWPOS, 1, oTBrowse:ROWPOS, oTBrowse:COLCOUNT}, {2, 5})
ENDIF
// evtl.
oTBrowse:hilite()
gruss by OHR
Jimmy
Jimmy
Re: DBedit / TBrowse Einzelne Zeilen einfärben
AUGE_OHR:
genau sowas
Aber kann man jede zeile im vorhinein schon einfärben?
also das man schon sieht welche markiert sind und nicht erst beim drüber scrollen
genau sowas
Aber kann man jede zeile im vorhinein schon einfärben?
also das man schon sieht welche markiert sind und nicht erst beim drüber scrollen
Über 4.000.000 Menschen hören Hiphop. Schreib dich nicht ab, lern reden und gehen.
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: DBedit / TBrowse Einzelne Zeilen einfärben
Ich habe doch geschrieben, dass dafür der TBColumn():colorBlock da ist.
Im Quellcode muss es eine Stelle geben in der die TBColumn() hinzugefügt werden.
Jeder dieser TBColumn() musst du mit :colorBlock := {|| if MyAlias->FeldTyp = ??? , aFarbeTyp1, aFarbeTyp2 }
die Farbe unterschieben. Die genau Syntax habe ich nicht im Kopf, aber du kannst einfach auf ein Feld mit alias zugreifen
(notfalls field->Feld????) damit alle Spalten die gleiche Farbe bekommen.
PS: normalerweise sieht der codeblock so aus:
aber man kann auch direkt auf ein Feld gehen, der Datensatz ist immer der aktuelle:
Im Quellcode muss es eine Stelle geben in der die TBColumn() hinzugefügt werden.
Jeder dieser TBColumn() musst du mit :colorBlock := {|| if MyAlias->FeldTyp = ??? , aFarbeTyp1, aFarbeTyp2 }
die Farbe unterschieben. Die genau Syntax habe ich nicht im Kopf, aber du kannst einfach auf ein Feld mit alias zugreifen
(notfalls field->Feld????) damit alle Spalten die gleiche Farbe bekommen.
PS: normalerweise sieht der codeblock so aus:
Code: Alles auswählen
{| Feldinhalt | iif( feldinhalt = ??? , aFarbeBeiJA, aFarbeBeiNein ) }
Code: Alles auswählen
{|| iif( field->ZeilenTyp="???" , aFarbeBeiJA, aFarbeBeiNein ) }
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: DBedit / TBrowse Einzelne Zeilen einfärben
Ich habe DBEdit so erweitert, dass ich für jede Spalte beim Aufruf Codeblöcke für die Farben angeben kann:
Uli
Code: Alles auswählen
PROCEDURE UTsDbEdit( nTop,nLeft,nBottom,nRight,aColumns,bcUserFunc,acPicture,
acHeading,acHeadSep,acColSep,acFootSep,acFooting,cColor,
abColorBlock,nRowPos )
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: DBedit / TBrowse Einzelne Zeilen einfärben
du hast o:Colorblock() für jede Columne und o:ColorRect() der dir einen Bereich einfärbt.denjo303 hat geschrieben:Aber kann man jede zeile im vorhinein schon einfärben?
also das man schon sieht welche markiert sind und nicht erst beim drüber scrollen
der o:Colorblock() müsste, wie der Name schon sagt, ein Codeblock enthalten der darüber entscheidet welche Farbe er für eine Cell nehmen soll.
Code: Alles auswählen
AADD( aDBF, { { || ABZU->ABZUDATE }, 5, "Date" , "", "", "" } )
AADD( aDBF, { { || ABZU->ABZUMODUS }, 4, "Modus" , "IF(ABZU->ABZUMODUS='AUS',{7,1},{5,1})", "", "" } )
AADD( aDBF, { { || ABZU->ABZUVK }, 5, "Vk" , "IF(ABZU->ABZUVK>0,{7,1},{1,0})", "", "" } )
...
oCol := XBPCOLUMN() :new( oBrowse,,,, aPP3 )
IF VALTYPE( aDBF[ i, 1 ] ) == "C" // hier datalink
oCol:dataLink := &( "{||" + aDBF[ i, 1 ] + "}" )
ELSE
oCol:dataLink := aDBF[ i, 1 ]
ENDIF
IF EMPTY( aDBF[ i, 4 ] ) // colorblock
ELSE
// hier Colorblock
IF VALTYPE( aDBF[ i, 4 ] ) == "C"
oCol:colorBlock := &( "{||" + aDBF[ i, 4 ] + "}" )
ELSEIF VALTYPE( aDBF[ i, 4 ] ) == "B"
oCol:colorBlock := aDBF[ i, 4 ]
ENDIF
ENDIF
gruss by OHR
Jimmy
Jimmy