Schaltfläche mit Farb & Text (Ich dreh noch durch)

Hallo,
Ich habe nun fast alle Varianten durchgespielt aber alles ohne Erfolg.
Ziel ist es eine Schaltfläche zu erstellen bei der Ich:

  1. einen Text aufdrucken kann.
  2. die Farbe des Textes ändern kann
  3. die Farbe der Schaltfläche ändern kann
  4. einen Rechtsklick und einen links klick unterscheiden kann.

Der Command Button aus den Forms2.0 kann das alles aber er ist zu groß da er leider die Caption auf sich Zentriert. Der „alte“ Command Button lässt keine Schriftfarbe zu.
Ein Label kann irgendwie nicht richtig zwischen links klick und rechts klick unterscheiden. Also wenn ich mein Programm starte funktioniert der Rechtsklick erst nachdem ich das Label einmal mit links angeklickt habe.

Was kann ich noch machen oder verwenden um eine Schaltfläche mit den 4 gewünschten Eigenschaften zu bekommen. ?

Hallo Joe,

zäh biste ja :smile:, aber ist nicht unnormal bei ähem Programmierern, da wird die Nacht durchgemacht um ein problem zu lösen, egal wie müd man am nächsten Tag bei der Arbeit auftaucht.

Ich bin fein raus, ich habe nur VB5 und sowieso keine Ahnung von VB.
Bei Rainer sieht das völlig annerster aus, vielleicht isses für ihn eine leichte Fingerübung dir da so ein ocx o.ä. zu basteln daß deinen Wünschen gerecht wird.

Wenn nicht mußte halt mit dem auskommen was dir VB anbietet.

Oder API-Funktionen finden die auswerten ob du links oder rechts geklickt hast und ob der Klick für ein Label war usw.

Sehr vielleicht wäre es hilfreich du sagst genauer was du da insgesamt so planst, may be es gibt andere Lösungsansätze dafür, wer weiß.

Gruß
Reinhard

Ich Bastel eine neue Version für ein kleines Desktop Menü auf dem Ca. 20 Schaltflächen Logisch nach Techniken angeordnet sind. Mit diesen Knöpfen werden verschiedene Programm gestartet. Nun ist es ja ganz fein wenn ein Anwender alle etwas Farblich gestalten kann.
Um die Schaltflächen zu konfigurieren, also Programm zuordnen, schaltflächentext und farbe ändern zu können sollte dieser Knopf einen rechtsklick erkennen. Der Linksklick für das programm auf.
Schaltflächenfarbe, TextFarbe und Caption sollen geändert werden können. und evtl soll sich die Schaltfläche bei einem MousOver bemerkbar machen. aber das könnte ich ja auch mit den Farben realisieren. Aber ich finde nichts passendes ?

im moment habe ich Label genommen, aber wie schon geschrieben klapt der rechtsklick da erst wenn sie vorher mit links geklickt wurden …

Danke euch

Hallo Joe,

warum machst es dir so schwer?
Vor einiger Zeit als ich noch mit VB6 gebastelt habe, stand ich auch vor der Problematik das die Buttons Sch**** ausschauen und hab mir da selber welche gebaut. M.E erfüllen sie genau das was du suchst!
Da ich sie in mehreren Projekten von mir verwendet habe, habe ich ein Steuerelement draus gebastelt. Auch habe ich dann den Source hier eingestellt. Zu finden unter FAQ:2683

Ich weiss nicht mehr so genau den Source und es kann vorkommen das ich da auf speziell VB6 spezifische Routinen zurueck gegriffen haben. Sollte dies der Fall sein, so findest du hier Abhilfe FAQ:2906

Schau es Dir mal an, ob es Dir so gefaellt :wink:

MfG Alex

PS: Ist nen bissl viel Source :s Aber ging net kürzer

Hi Joe,

Ich habe nun fast alle Varianten durchgespielt aber alles ohne
Erfolg.
Ziel ist es eine Schaltfläche zu erstellen bei der Ich:

  1. einen Text aufdrucken kann.
  2. die Farbe des Textes ändern kann
  3. die Farbe der Schaltfläche ändern kann
  4. einen Rechtsklick und einen links klick unterscheiden kann.

Der Command Button aus den Forms2.0 kann das alles aber er ist
zu groß da er leider die Caption auf sich Zentriert. Der
„alte“ Command Button lässt keine Schriftfarbe zu.

Deine erste Frage dazu hatte sich auf ‚Forms2.0‘ bezogen, dazu kann ich nichts sagen, das kenne ich nicht. Mein VB6.0 weiß nichts von Forms2.0.

Einen Button, den es so wie ich ihn nicht möchte nicht gibt, würde ich mir mit einem Picture bauen. (Und dann eventueell ein OCX daraus basteln, wenn der öfter benötigt wird.

Ein Vorschlag mit einem farbigen Rand:

Option Explicit

Private Sub Form\_Load()
 Me.Show
 ButtonText "Test", vbRed, vbBlue
End Sub

Private Sub ButtonText(ByVal Txt As String, ByVal Back As Long, ByVal Fore As Long)
 Dim Dx As Integer, dy As Integer
 Dim Fl As Long, Fd As Long, r As Long, g As Long, b As Long
 Picture1.BorderStyle = 0 'kein Rand
 Picture1.FontTransparent = True
 Picture1.BackColor = Back
 Picture1.ForeColor = Fore
 Picture1.ScaleMode = 3 'Pixel
 b = (Back And CDbl("&hff0000")) \ (256& \* 256&amp:wink:
 g = (Back And CDbl("&h00ff00")) \ 256
 r = Back And CDbl("&h0000ff")

 Fl = (r Or 159) + (g Or 159) \* 255 + (b Or 159) \* 255 \* 255

 Picture1.Line (0, 0)-(1, Picture1.ScaleHeight), Fl, BF
 Picture1.Line (0, 0)-(Picture1.ScaleWidth, 1), Fl, BF

 Fd = (r / 2) + ((g / 2) \* 255) + ((b / 2) \* 255)

 Picture1.Line (0, Picture1.ScaleHeight - 2)-(Picture1.ScaleWidth, Picture1.ScaleHeight), Fd, BF
 Picture1.Line (Picture1.ScaleWidth - 2, 0)-(Picture1.ScaleWidth, Picture1.ScaleHeight), Fd, BF

 Picture1.CurrentY = Picture1.ScaleHeight \ 2 - Picture1.FontSize \ 2
 Picture1.CurrentX = 10
 Picture1.Print Txt
End Sub

Gruß Rainer

Ergänzung
Hallo,

mich hat geärgert, daß ich den Text nicht zentrieren konnte.
Meine Lösung ist sicher nicht die eleganteste, aber kurz. :smile: Ich habe noch ein Label auf das Picture gelegt …

Das Steuerelement von Alex ist aber natürlich besser. :smile:

Gruß Rainer

Option Explicit

Private Sub Form\_Load()
 Me.Show
 ButtonText "Test und neuer Versuch", vbRed, vbBlue
End Sub

Private Sub ButtonText(ByVal Txt As String, ByVal Back As Long, ByVal Fore As Long)
 Dim Dx As Integer, dy As Integer
 Dim Fl As Long, Fd As Long, r As Long, g As Long, b As Long
 Label1.AutoSize = True
 Label1.Top = Picture1.Height + 30
 Label1.Caption = Txt
 Picture1.BorderStyle = 0 'kein Rand
 Picture1.FontTransparent = True
 Picture1.AutoRedraw = True
 Picture1.BackColor = Back
 Picture1.ForeColor = Fore

 b = (Back And CDbl("&hff0000")) \ (256& \* 256&amp:wink:
 g = (Back And CDbl("&h00ff00")) \ 256
 r = Back And CDbl("&h0000ff")

 Fd = (r / 2) + ((g / 2) \* 255) + ((b / 2) \* 255)

 Picture1.Line (0, Picture1.Height - 30)-(Picture1.Width, Picture1.ScaleHeight), Fd, BF
 Picture1.Line (Picture1.Width - 30, 0)-(Picture1.Width, Picture1.ScaleHeight), Fd, BF

 Fl = (r Or 159) + (g Or 159) \* 255 + (b Or 159) \* 255 \* 255

 Picture1.Line (0, 0)-(15, Picture1.ScaleHeight), Fl, BF
 Picture1.Line (0, 0)-(Picture1.ScaleWidth, 15), Fl, BF

 Picture1.CurrentY = Picture1.Height \ 2 - Label1.Height \ 2
 Picture1.CurrentX = (Picture1.Width \ 2) - (Label1.Width \ 2)
 Picture1.Print Txt
End Sub

Ahoi Alex,
Vielen Dank für das Steuerelement. Es bietet wirklich alle Funktionen die ich benötige. Leider habe ich das gleiche Problem wie auch schon in der FAQ beschrieben. Wenn die Schaltflächen auf einer form liegen und ich zum beispiel eine andere Form darüberschiebe oder darüber öffne werden die Schaltflächen nicht mehr angezeigt. erst nach einem Mausover sind sie wieder sichtbar. ein form.refresh bringt leider auch nichts.

mfg joe

Hallo Joe,

ich arbeite nicht mehr mit VB6 sonder VB9. Aber schau dir mal das Paint Ereignis der Form an. Das sollte genau in dem Falle aufgerufen werden. Dort rufst du einfach die Refresh Methode aus der Klasse auf und voila das Problem gehört der Vergangenheit an!

MfG Alex

1 Like

Autoredraw = True !! in den Eigenschaften.!
Danke für den Tipp !!

ich stehe tief in Deiner Schuld :stuck_out_tongue:

mfg jonny

Ahoi,
nochmals Danke für die Schaltfläche!
hast Du noch eine Idee warum der Text auf der Schaltfläche am ersten und letzten Buchstaben abgeschnitten wird wenn man den Text als FETT Formatiert ?

danke mfg jonny

nochmals Danke für die Schaltfläche!
hast Du noch eine Idee warum der Text auf der Schaltfläche am
ersten und letzten Buchstaben abgeschnitten wird wenn man den
Text als FETT Formatiert ?

Hallo Jonny,

ohne Ahnung, mach die Scchaltfläche breiter und/oder wenn möglich Text linksbündig darstellen.

Gruß
Reinhard