collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 65
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 4
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 14129
  • stats Beiträge insgesamt: 68358
  • stats Themen insgesamt: 9207
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Steuerelement zweifarbig  (Gelesen 1635 mal)

Offline crystal

  • Access-Profi
  • **
  • Beiträge: 382
Steuerelement zweifarbig
« am: Februar 12, 2018, 15:29:34 »
Hallo,

gibt es eine einfache und elegante Möglichkeit, ein Steuerelement (z.B. Textfeld) zweifarbig zu gestalten, also z.B. linke Hälfte gelb, rechte Hälfte grün?
Könnte man das mit api-Calls machen und wenn ja wie?

Mein Formular hat jetzt schon knapp 450 Felder, die Aufteilung in je zwei angrenzende Felder scheidet daher wohl aus (ein Kommentar zu dieser Anzahl ist nicht erforderlich  ::) ).

Kann man mit Access-2010-Bordmitteln eigene Steuerelemente kreieren, die sowas könnten? Oder z.B. das Textfeld-Element als Klasse ableiten in ein neues Steuerelement mit neuen Properties?

Bei VB geht sowas, soweit ich mich erinnere.

Gruß,
c.
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1428
Re: Steuerelement zweifarbig
« Antwort #1 am: Februar 12, 2018, 15:46:49 »
Alle Fragen kann ich mit nein beantworten. Abgesehen von Steuerelementen, die man nicht in den Detailbereich eines Endlosformulars packen kann, existiert immer nur ein (1) echtes Windows-Control im Formular und das ist jenes, welches den Fokus besitzt und somit auch ein Handle (hWnd) hat.

Mit entsprechender Grafik-Bibliothek könnte man jedoch seine Controls selbst in ein Bild einmalen und der Picture-Eigenschaft des Formulars bzw. anderer Controls zuweisen und jeweils deren Mouse-Ereignisse auswerten - die Geometrie ist ja vorgegeben und müsste nur bei Größenänderung des Formulars neu berechnet werden.
Grüße von der (⌒▽⌒)
 

Offline crystal

  • Access-Profi
  • **
  • Beiträge: 382
Re: Steuerelement zweifarbig
« Antwort #2 am: Februar 12, 2018, 16:06:22 »
@Lachtaube

Danke für deine schnelle Antwort. Hätte auch gleich an dich schreiben können, den API-Profi...

Da nun das aktive Control einen Handle hat, könnte man doch vielleicht auf die Drawing-Area zugreifen (links, oben, rechts, unten) und durch einfache Berechnungen die linke Hälfte gelb und die rechte grün einfärben, oder?
Es geht nicht darum, ein Control einer beliebigen Form anzupassen, sondern darum, einem exakten Rechteck (Textfeld) zwei verschiedene Farben (links/rechts oder oben/unten oder sogar diagonal getrennt) zu verpassen.

Irgendwas ist da ja wohl möglich, wenn auch nur für Buttons, denen man einen Farbverlauf geben kann (leider kann man nur eine Farbe auswählen, die dann als Verlauf aufgehellt wird. Ein Farbverlauf von gelb nach grün ist nicht möglich.).
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1428
Re: Steuerelement zweifarbig
« Antwort #3 am: Februar 12, 2018, 16:29:54 »
@Crystal,

selbst wenn Deine erste Annahme gelänge, würde spätestens, wenn in der Message-Loop von Access ein Paint-Ereignis ansteht, alles wieder übermalt werden.

Aber wie gesagt, mit einer Grafik-Bibliothek (z. Bsp. gdi+ oder dem vbRichClient-Framwork, was ich im Beispiel verwende) kann man schon einiges machen. (Natürlich auch Rechtecke mehrfarbig, mit Verlauf, Alpha-Blend beschriftet malen.)
Grüße von der (⌒▽⌒)
 

Offline crystal

  • Access-Profi
  • **
  • Beiträge: 382
Re: Steuerelement zweifarbig
« Antwort #4 am: Februar 12, 2018, 17:32:35 »
Neue Idee:
wie wäre es mit richtext-Feldern? Die kann man ja html-ähnlich farblich und anderweitig gestalten.

Frage ist nur: wie bekomme ich ungebundene richtext-Felder in mein Formular bzw. wie kann ich vorhandene Textfelder in richtext-Felder umwandeln?
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1428
Re: Steuerelement zweifarbig
« Antwort #5 am: Februar 12, 2018, 17:53:13 »
Das wäre ein Experiment wert. Es handelt sich ja um normale Textfeldsteuerelemente, in denen die TextFormat Eigenschaft auf Richtext festgelegt ist.
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: crystal

Offline crystal

  • Access-Profi
  • **
  • Beiträge: 382
Re: Steuerelement zweifarbig
« Antwort #6 am: Februar 12, 2018, 18:19:24 »
@Lachtaube
Ja, ich glaube richtext könnte eine Lösung sein.

Wie wäre der minimale richtext-text, um z.B. ein dreizeiliges Feld in den Jamaica-Farben darzustellen, also z.B.
1. Zeile schwarz auf grün,
2. Zeile schwarz auf gelb,
3. Zeile weiß auf schwarz

oder

linke Hälfte gelb, rechte Hälfte grün und als Text
ABC
DEF
GHI

Ist es möglich, ein richtext-Feld unabhängig vom Inhalt zweifarbig zu gestalten, also erst den Hintergrund zu definieren und dann den Text zu schreiben (zuerst Hintergrund gelb/grün, dann Text drüber)?

Ist es also möglich, mit einer rtf-Definition das Ausgabefeld in seiner Gänze farblich zu gestalten, ohne Rücksicht auf den Text, der dann dargestellt werden soll?

Vielleicht kennst du dich ja mit dem richtext-Format schon etwas besser aus als ich und könntest ein kleines Codeschnipsel beisteuern. Das wäre toll.

Danke,
c.

PS: wie ich ein Textfeld in ein Richtext-Feld umwandle, habe ich inzwischen gelernt. Geht ja ganz einfach über Eigenschaften->Textformat->Richtext. Das Feld muss zuvor nur vom Typ "Textfeld" sein und nicht "Bezeichnungsfeld", wie in meinem Test-Formular... Dann klappt's auch mit ungebundenen Feldern.
« Letzte Änderung: Februar 12, 2018, 18:30:55 von crystal »
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!
 

Online PhilS

  • Global Moderator
  • Access-Profi
  • *****
  • Beiträge: 391
    • Tipps zu Access, VBA, SQL und Co.
Re: Steuerelement zweifarbig
« Antwort #7 am: Februar 12, 2018, 18:48:07 »
Nur mal eingeworfen: Ich würde in diesem Zusammenhang mal kritisch hinterfragen, ob Access hier noch das Mittel der Wahl ist. Anspruchsvolle visuelle Gestaltung von komplexen Sachverhalten ist nicht unbedingt die Stärke von Access.

Ich vermute es geht um das Kalenderformular, das du kürzlich bereits hier vorgestellt hattest. Ich hatte vor einigen Jahren eine ähnliche Anforderung und mich damals entschieden, diese nicht direkt in Access umzusetzen, sondern mit einem .Net-Steuerelement, dass in ein Access-Formular eingebunden wird. Rückblickend auf die ganzen Erweiterungen, die nach der ursprünglichen Anforderungsdefinition noch hinzugekommen sind, war das eine sehr gute Entscheidung.

Was vielleicht ebenfalls eine gute Lösung für deine Anforderungen sein könnte, ist die visuelle Darstellung in HTML. Diese wird dann in einem Webbrowser-Control in dem Access-Form eingebunden. Ich selbst habe damit nur begrenzte Erfahrung, aber Jack Leach hat ein visuell sehr ansprechendes Beispiel für embedded HTML in Access veröffentlicht.
Neues Access 2019 Feature angekündigt: Modern Charts
 
Folgende Mitglieder bedankten sich: crystal

Offline crystal

  • Access-Profi
  • **
  • Beiträge: 382
Re: Steuerelement zweifarbig
« Antwort #8 am: Februar 13, 2018, 15:02:59 »
@PhilS
Danke für deine Stellungnahme und den HTML-Tipp.
Ich habe auch schon an HTML gedacht, aber dann müsste ich mein Kalender-Formular komplett neu aufsetzen und mich noch zusätzlich mit HTML, JS usw. beschäftigen. Angesichts der Tatsache, dass es sich bei meinem Projekt um eine freiwillige Bastellösung handelt, erschien mir der Aufwand, mich in HTML und JS einzuarbeiten, bisher zu hoch.

Auch den Aufwand, mich in VisualBasic oder Csharp einzuarbeiten halte ich für zu hoch. Ich hatte auch die Idee, in VB ein Textfeld zu bauen und dann als ActiveX in Access einzubinden. Aber mangels Erfahrung habe ich das auch nicht weiter verfolgt.

Für ein anderes Projekt, das ich wegen längerer Krankheit einstellen musste, hatte ich mittels Richtext ein Ufo realisiert, das in der Lage war, in jeder Zeile 32 verschiedene Farben in Textfeldern darzustellen. Das sah schon beeindruckend aus, wenn 20 Datensätze mit je 32 völlig unterschiedlichen Farben angezeigt wurden. Daran habe ich mich jetzt erinnert und werde mit diesem Ansatz experimentieren.

Ansonsten gebe ich dir völlig Recht: was visuelle Gestaltungs-Möglichkeiten angeht, ist Access sehr bescheiden und nicht mehr zeitgemäß. Mal sehn, was die nächste Version bringt, vielleicht in 2020...

Im Anhang ein Screen meines damaligen Kalender-Formulars. Die farbigen UFos (noch nicht fertig und an die Tage des Kalenders angepasst) klappen auf und zu, wenn man auf die blaue Monats-Nummer klickt, die dann grün wird. Alles mit Access-Bordmitteln.

Gruß,
c.



Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!
 

Offline crystal

  • Access-Profi
  • **
  • Beiträge: 382
Re: Steuerelement zweifarbig
« Antwort #9 am: Februar 13, 2018, 16:16:27 »
Nachtrag:
Inzwischen habe ich gelernt, dass Access auch HTML in Richtext-Feldern "versteht", wohl sogar besser als RTF.
Es ist daher nicht erforderlich, ein Richtext-Feld in Richtext-Syntax zu besetzen, HTML funktioniert ebenso oder sogar direkter; es scheint so, dass "echter" rtf-Code von Access in HTML übersetzt und dann vom HTML-Parser interpretiert/dargestellt wird.
Damit steht die ganze HTML-Welt zur Gestaltung eines Textfelds offen.

Beispiel:
<span style="background-color: #ff6600">AA</span><span style="background-color: #00ff00">BB</span>

als Text einem Richtext-Textfeld zugewiesen ergibt
AABB
(hier allerdings falsch als Font-Farbe statt als Hintergrund-Farbe dargestellt).

Habe noch nicht herausgefunden, wie ich z.B. den Text "ABC" genau zur Hälfte mit zwei Hintergrunds-Farben darstellen kann, also das "B" halb grün und halb rot.

Muss nun doch HTML lernen, jedenfalls etwas.

Es ergeben sich ungeahnte Möglichkeiten für mein komplexes Kalender-Formular und vielleicht für andere Anwendungen... Und alles mit einfachen VBA-Zuweisungen, was ja in meinem Kalender-Formular mit seinen ungebundenen Feldern, die sowieso schon per VBA gefüllt werden, kein Problem darstellt.

Ich betrachte das Problem also als gelöst, aber vielleicht hat jemand doch noch Tipps.

Gruß,
c.
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!
 

Online PhilS

  • Global Moderator
  • Access-Profi
  • *****
  • Beiträge: 391
    • Tipps zu Access, VBA, SQL und Co.
Re: Steuerelement zweifarbig
« Antwort #10 am: Februar 13, 2018, 16:23:15 »
Damit steht die ganze HTML-Welt zur Gestaltung eines Textfelds offen.
Nur ganz kurz: Nein! Leider nicht. Der Umfang von HTML, den Access in "RichText"-Feldern versteht, ist leider sehr, sehr eingeschränkt und auch manche Details, die es eigentlich verstehen sollte, werden falsch gerendert.
(Ich ärgere ich mich in einem Projekt gerade aktuell und konkret über Aufzählungen mit Bullet-Points.)
Neues Access 2019 Feature angekündigt: Modern Charts
 

Offline crystal

  • Access-Profi
  • **
  • Beiträge: 382
Re: Steuerelement zweifarbig
« Antwort #11 am: Februar 13, 2018, 17:16:09 »
@PhilS
Danke für den Hinweis.
Irgendwie ist schon klar, dass Microsoft hier bei der Implementierung gespart hat. Schließlich könnte man statt des Richtext-Feldes mit eingeschränktem "HTML-Verständnis" ja auch ein Browser-Steuerelement benutzen. Leider ist die Dokumentation beider recht dürftig - auch ein grundsätzliches Problem bei MS. Da ist man schon auf google angewiesen und gute Beiträge in Foren wie diesem...

Ich denke aber, dass die beschränkte HTML-Funktionalität für meine Zwecke ausreicht, auch wenn ich es vermutlich nicht mit angemessenem Aufwand schaffen werde, ein Feld genau mittig zweifarbig zu gestalten. Da meine Felder genau 3 Zeichen breit und 3 Zeilen hoch sind (nicht-propertionale Schrift), hätte ich prinzipiell die Möglichkeit, 9 verschiedene Farben je Feld darzustellen. Das sollte reichen. Mal probieren, wie das performt.

Übrigens: Kennst du evtl. einen Stringbuilder für VBA?

Gruß,
c.
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1965
Re: Steuerelement zweifarbig
« Antwort #12 am: Februar 14, 2018, 12:42:47 »
Hallo Crystal,
Ich habe irgendwann mal Folgendes aus dem Netz kopiert, allerdings dann
irgendwie nie verwendet. Ist also ungetestet.
Private Sub cmdSql2Vba_Click()
'Author:    Allen Browne
'Purpose:   Convert a SQL statement into a string to paste into VBA code.

    Dim strSql As String
    Const strcLineEnd = " "" & vbCrLf & _" & vbCrLf & """"

    If IsNull(Me.txtSQL) Then
        Beep
    Else
        strSql = Me.txtSQL
        strSql = Replace(strSql, """", """""")  'Double up any quotes.
        strSql = Replace(strSql, vbCrLf, strcLineEnd)
        strSql = "strSql = """ & strSql & """"
        Me.txtVBA = strSql
        Me.txtVBA.SetFocus
    End If
End Sub

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 
Folgende Mitglieder bedankten sich: crystal

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1428
Re: Steuerelement zweifarbig
« Antwort #13 am: Februar 14, 2018, 12:58:26 »
Die VB6-Klasse StrBldr von Karl E. Peterson funktioniert auch unter VBA, wenn die API-Deklarationen etwas angepasst werden.#If VBA7 Then
Private Declare PtrSafe Function VarPtrArray Lib "VBE7" Alias "VarPtr" ( _
   Var() As Any) As LongPtr
Private Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
   Destination As Any, Source As Any, ByVal Length As Long)
#Else
Private Declare Function VarPtrArray Lib "VBE6" Alias "VarPtr" ( _
   Var() As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
   Destination As Any, Source As Any, ByVal Length As Long)
#End If
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: crystal

Offline crystal

  • Access-Profi
  • **
  • Beiträge: 382
Re: Steuerelement zweifarbig
« Antwort #14 am: Februar 15, 2018, 15:55:05 »
Danke Beaker s.a. und Lachtaube für eure Infos!
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!
 

 

Steuerelement-Assistent ein-/ausschalten

Begonnen von The DJ is hereBoard Formular

Antworten: 3
Aufrufe: 7082
Letzter Beitrag September 15, 2010, 09:09:15
von Profitor
Kalender-Steuerelement in Access 2010

Begonnen von RedakteurinBoard Formular

Antworten: 15
Aufrufe: 33756
Letzter Beitrag April 26, 2011, 09:12:52
von mr187
Steuerelement zentrieren

Begonnen von pjo12345Board Access-Hilfe

Antworten: 1
Aufrufe: 3436
Letzter Beitrag September 11, 2010, 14:37:37
von database
Treeview Steuerelement Frage

Begonnen von silentwolfBoard Formular

Antworten: 6
Aufrufe: 3787
Letzter Beitrag August 09, 2011, 09:22:21
von silentwolf
Mehrere Probleme mit Access Aufgabe und Steuerelement-Assi

Begonnen von ChrisKayOneBoard Access-Hilfe

Antworten: 1
Aufrufe: 1532
Letzter Beitrag Dezember 17, 2011, 19:23:45
von database