[gelöst] Base: Kontrollfeld/Schrift je nach Inhalt färben

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Dieter_Graz
**
Beiträge: 22
Registriert: Fr, 03.01.2014 16:46

[gelöst] Base: Kontrollfeld/Schrift je nach Inhalt färben

Beitrag von Dieter_Graz »

Hallo!

Ich habe ein Formular erstellt, dass zur Dateneingabe aber auch als Infoplattform dienen soll.
Um die Einträge besser darstellen zu können wäre es hilfreich wenn z-B. Statusangaben farblich dargestellt werden.
yes=grün
norot
ongoing=orange

Als Neuling benötige ich dringend Hilfe. Ich komme einfach noch nicht zurecht :-(.
1. Kann mir bitte wer ein Makro dazu schreiben?
2. Wie beginnt man am Besten das Schreiben von Makros zu erlernen?
3. Gibt es eine Möglichkeit das Problem mit einer Art "bedingter Formatierung" zu lösen?

Vielen, vielen Dank!

Dieter
Zuletzt geändert von Dieter_Graz am So, 05.01.2014 18:46, insgesamt 1-mal geändert.
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Base: Kontrollfeld/Schrift je nach Inhalt färben

Beitrag von F3K Total »

Hallo Dieter,
kannst Du bitte genauer beschreiben, was Du mit Statusangaben meinst.
Welche Art von Tabellenspalte liegt zugrunde, welche Art von Kontrollfeld?
Am besten lädst du eine Beispieldatei hoch.
Dieter_Graz hat geschrieben:Als Neuling benötige ich dringend Hilfe. Ich komme einfach noch nicht zurecht :-(.
1. Kann mir bitte wer ein Makro dazu schreiben?
2. Wie beginnt man am Besten das Schreiben von Makros zu erlernen?
3. Gibt es eine Möglichkeit das Problem mit einer Art "bedingter Formatierung" zu lösen?
  • zu 1.) ...
  • zu 2.) Es gibt eine Reihe von Informationsmöglichkeiten, schon in diesem Forum.
  • zu 3.) Man kann die Schiftfarbe in einem formatierten Feld mit Hilfe des Formatcodes steuern, die Hintergrundfarbe nicht.
    z.B mit

    Code: Alles auswählen

    [<=3][ROT]Standard ;[<10][BLAU]Standard;Standard
Gruß R
Dieter_Graz
**
Beiträge: 22
Registriert: Fr, 03.01.2014 16:46

Re: Base: Kontrollfeld/Schrift je nach Inhalt färben

Beitrag von Dieter_Graz »

Hallo R,
erstmal herzlichen Dank für deine schnelle Hilfe. Zur Erklärung habe ich einen Screenshot angehängt. Es handelt sich um Textfelder. Nehme an
die gehören gegen formartierte Felder getauscht.
Die Einträge ändern sich mit dem Projectfortlauf (no, ongoing, yes). Das ganze Formular enthält ca. 60 Texfelder, davon 15 mit diesen Werten, natürlch nach jedem
Projectupdate immer anders verteilt.
Die Tabellenspalten sind auch als Text definiert. Es mir nur darum, das Ganze visuell besser darstellen zu können. Mit verschiedenen Textfarben, je nach Status
wäre ich schon sehr happy.

Ich hoffe ich konnte, das vertändlich erklären, beschäftige mich erst seit 2 Wochen mit Base.

Vielen Dank

Gruß aus Graz
Dateianhänge
Screenshot
Screenshot
2014-01-03_2200.png (3.93 KiB) 4696 mal betrachtet
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Base: Kontrollfeld/Schrift je nach Inhalt färben

Beitrag von F3K Total »

Moin,
ich habe dir da mal was gebaut, zwei Makros, S_Insert_Backgroundcolor und S_Insert_Backgroundcolor_on_Rowchange.
Binde S_Insert_Backgroundcolor bei jedem Textfeld, dass eingefärbt werden soll, an das Ereignis Modifiziert.
Damit sich die Feldfarben bei einem Datensatzwechsel auch anpassen, binde S_Insert_Backgroundcolor_on_Rowchange an das Formularereignis Nach dem Datensatzwechsel
Möchtest Du, das die Hintergrundfarbe des Textfeldes angepasst wird, schreibe in die Zusatzinformation (engl.: tag) ein B für Background, läßt du die Zusatzinformation leer, wird die Schriftfarbe angepasst.
Die Farben stehen ganz oben, es gilt, um sie aus RGB zu errechnen, die Formel

Code: Alles auswählen

N_x = (R * 256^2) + (G * 256) + (B)
z.B. für Rot -> RGB(255, 0, 0)

Code: Alles auswählen

=> 
N_rot = (255 * 256^2) + (0 * 256) + (0)
N_rot = 16711680

Code: Alles auswählen

const C_N = 16711680 'rot
const C_O = 16744960 'orange
const C_Y = 39168 'grün
const C_S = 13882323 'grau

Sub S_Insert_Backgroundcolor(event, optional oControl)
    if ismissing(oControl) then
        ocontrol = event.source.model
    endif
    select case ocontrol.CurrentValue
        case "no"
        nBackgroundcolor = C_N
        nTextColor = C_N
        case "ongoing"
        nBackgroundcolor = C_O
        nTextColor = C_O  
        case "yes"
        nBackgroundcolor = C_Y
        nTextColor = C_Y
        case else
        nBackgroundcolor = C_S
        nTextColor = 0
    end select
    if ocontrol.tag = "B" then
        ocontrol.Backgroundcolor = nBackgroundcolor
    else
        ocontrol.TextColor = nTextColor
    endif
    thiscomponent.modified = false
End Sub

sub S_Insert_Backgroundcolor_on_Rowchange(event)
    oForm = event.source
    for i = 0 to oform.count - 1
        oControl = oForm(i)
        if oControl.supportsservice("com.sun.star.form.binding.BindableDatabaseTextField") then
            if ubound(oForm.getScriptEvents(i))>= 0 then
                oscripts = oform.getScriptEvents(i)
                if oscripts(0).ScriptCode="vnd.sun.star.script:Standard.States.S_Insert_Backgroundcolor?language=Basic&location=document" then
                     S_Insert_Backgroundcolor(event,oControl)
                endif
            endif
        endif
    next i  
end sub
Anbei eine Beispieldatei.
So, viel Erfolg
Gruß R
Dateianhänge
Graz.odb
(22.41 KiB) 291-mal heruntergeladen
Dieter_Graz
**
Beiträge: 22
Registriert: Fr, 03.01.2014 16:46

Re: Base: Kontrollfeld/Schrift je nach Inhalt färben

Beitrag von Dieter_Graz »

Haoll R,
Vielen dank für Deine Mühe. Sobald ich zeit habe werde ich alles ausprobieren und Dir selbstverständlich berichten.

Schönes Wochenende und Gruß aus Graz

Dieter
Dieter_Graz
**
Beiträge: 22
Registriert: Fr, 03.01.2014 16:46

Re: Base: Kontrollfeld/Schrift je nach Inhalt färben

Beitrag von Dieter_Graz »

Hakko R,
ich bin begeistert! Danke!
Es funktioniert astrein, die Schrift wird färbig. Leider wusste ich mit den beiden "Farbenformeln" nichts anzufangen. Sind die dazu da die Werte erstmal alle einzufärben. Momentan sind sie schwarz bis ich den Wert ändere. Allerdings ein yes wird immer ein yes bleiben, d.h. schwarz bleiben. Das Sahnehäubchen wäre jetzt nur noch alle erstmal einzufärben, dem aktuellen Stand nach. Sonst müsste ich alle ändern und wieder zurückändern, das wären nicht Stunden sondern Tage.

Ich muss das "Markroschreiben" unbedingt erlernen, ist eine Super-Sache.

Gruß aus Graz

Dieter
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Base: Kontrollfeld/Schrift je nach Inhalt färben

Beitrag von F3K Total »

Dieter_Graz hat geschrieben: Leider wusste ich mit den beiden "Farbenformeln" nichts anzufangen
Ganz oben über den Makros steht

Code: Alles auswählen

const C_N = 16711680 'rot
const C_O = 16744960 'orange
const C_Y = 39168 'grün
const C_S = 13882323 'grau
Die Nummern stehen für die Farben, wenn du andere Farben haben möchtest, tauscht du die Nummern aus, wenn du eine Farbe kennst die dir gefällt, z.B.
RGB (4,102,204), dann berechnest Du die Zahl so: 4*256^2+102*256+204 = 288460
Dieter_Graz hat geschrieben:Das Sahnehäubchen wäre jetzt nur noch alle erstmal einzufärben, dem aktuellen Stand nach. Sonst müsste ich alle ändern und wieder zurückändern, das wären nicht Stunden sondern Tage.
Diese Funktion ist bereits integriert:
F3K Total hat geschrieben:... binde S_Insert_Backgroundcolor_on_Rowchange an das Formularereignis Nach dem Datensatzwechsel ...
Gruß R
Zuletzt geändert von F3K Total am So, 05.01.2014 09:19, insgesamt 1-mal geändert.
Dieter_Graz
**
Beiträge: 22
Registriert: Fr, 03.01.2014 16:46

Re: Base: Kontrollfeld/Schrift je nach Inhalt färben

Beitrag von Dieter_Graz »

Hallo Rik,
Vielen Dankfür die Erklärung.
Ich habe die Tabellen ursprünglich aus einen .xlsx Datei importiert. D.h. viele Werte werden nicht mehr verändert, damit erfolgt keine Datenänderung mehr.
Was ich meine ist dass die Werte auch schon beim Starten des Formulars eingefärbt werden.


Gruß aus Graz,

Dieter
Dateianhänge
2014-01-05_0913.png
2014-01-05_0913.png (32.84 KiB) 4638 mal betrachtet
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Base: Kontrollfeld/Schrift je nach Inhalt färben

Beitrag von F3K Total »

Dieter_Graz hat geschrieben:... dass die Werte auch schon beim Starten des Formulars eingefärbt werden ...
Ja, genau dass tut das Makro S_Insert_Backgroundcolor_on_Rowchange, wenn es richtig angewendet wird!
Gruß R
Dieter_Graz
**
Beiträge: 22
Registriert: Fr, 03.01.2014 16:46

Re: Base: Kontrollfeld/Schrift je nach Inhalt färben

Beitrag von Dieter_Graz »

Hallo R,
das tut es leider nicht. Nach dem Schließen und wieder Öffnen ist wieder alles in schwarz. Danke für Deine Geduld.

Lg,
Dieter
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Base: Kontrollfeld/Schrift je nach Inhalt färben

Beitrag von F3K Total »

Das tut es doch, siehe Beispieldokument !!!
Ich habe dir eine PN (private Nachricht) geschickt.
Gruß R
Dieter_Graz
**
Beiträge: 22
Registriert: Fr, 03.01.2014 16:46

Re: Base: Kontrollfeld/Schrift je nach Inhalt färben

Beitrag von Dieter_Graz »

Hallo R,
habe jetzt mal versucht, Dein Beispiel nachzubauen. Davor habe ich immer an meiner Tabelle probiert.
Irgendwo habe ich was übersehen. Habe die beiden Datein verglichen, bis auf das S in den Zusatzinformationen ist mir nichts aufgefallen. Was mache ich falsch.
hab den Nachbau angehängt.


Lg,
Dieter

Achja yes sollte grün sein, no rot usw. Ein Bedienfehler meinerseits an Deiner Datei?
Dateianhänge
Graz_Dieter.odb
(11.51 KiB) 115-mal heruntergeladen
2014-01-05_1112.png
2014-01-05_1112.png (4.14 KiB) 4623 mal betrachtet
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Base: Kontrollfeld/Schrift je nach Inhalt färben

Beitrag von F3K Total »

Hallo Dieter,
Dieter_Graz hat geschrieben:Ein Bedienfehler meinerseits an Deiner Datei?
vermutlich, bei mir sieht das so aus:
R.png
R.png (2.43 KiB) 4617 mal betrachtet
Nun zu deiner Datei:
Du hast die Makros nicht im Dokument, sondern unter "Meine Makros", darum sind sie nicht mitgekommen und ich kann nicht sehen, was du daran gemacht hast. Es fällt auf, dass im untersten Feld kein S steht.
Die Zusatzinformation ist nicht das S sondern ein B wenn die Hintergrundfarbe angepasst werden soll, kein Eintrag, wenn die Textfarbe angepasst werden soll!

Anbei deine Datei, mit eingebetteten Makros, die bei mir funktioniert.
Habe noch vier zusätzliche Felder eingebaut, damit Du den Unterschied bzgl. Zusatzinfomation nix oder B direkt sehen kannst.
D.png
D.png (5.72 KiB) 4619 mal betrachtet

Gruß R
Dateianhänge
Graz_Dieter_R.odb
(13.42 KiB) 184-mal heruntergeladen
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Base: Kontrollfeld/Schrift je nach Inhalt färben

Beitrag von F3K Total »

Hallo Dieter,
ich habe da noch mal eine Idee, warum meine Dateien, ggf. bei Dir nicht funktionieren. Es muss natürlich zugelassen werden, dass die mitgelieferten Makros auch ausgeführt werden dürfen.
Dazu, stellst du unter
Extras/Optionen/Openoffice.org oder LibreOffice.org/Sicherheit/Makrosicherheit
mindestens die Stufe Mittel ein, dann wirst du beim Öffnen von Dokumenten gefragt, ob du Makros ausführen möchtest.


Gruß R
Dieter_Graz
**
Beiträge: 22
Registriert: Fr, 03.01.2014 16:46

Re: Base: Kontrollfeld/Schrift je nach Inhalt färben

Beitrag von Dieter_Graz »

Hallo R,
ja Du hast Recht, Deine Makros laufen jetzt astrein. Danke. Werde mich daran machen dass ich "meine" auch zum Laufen bringe :D .

Berichte später

bis dann
Dieter
Antworten