Toon posts:

[vb6] Gekleurde teksten in dialog?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik durf het bijna niet te vragen, want ik weet vrijwel zeker dat het toch niet kan.... Maar niet geschoten is altijd mis natuurlijk ;)

De grote vraag: kun je een stukje tekst een andere kleur geven in een dialogbox van visual basic

normaal is de code
code:
1
msgbox "blabla", vbokonly, "titeltje"

en nu wil ik het een soort van zo hebben:
code:
1
msgbox "Dit is ROOD en dit is GROEN", vbokonly, "titeltje"

(en dan moet 'ROOD' de kleur rood krijgen, en 'GROEN' de kleur groen)

Weet iemand, als dit niet kan, hoe ik zelf een eigen dialogbox in elkaar fruts, zonder meteen een hele dag bezig te zijn?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 02-09 09:31

Crazy D

I think we should take a look.

Nope kan niet. Naja misschien als je heel creatief met wat API calls omgaat...
Dialoogje maken is redelijk makkelijk. Op zich is een MsgBox niet veel meer dan een normaal windowtje die modal getoont wordt, en die een waarde terug kan geven.

Exact expert nodig?


Verwijderd

Topicstarter
Ja, maar mijn probleem is als volgt:

ik wil een msgbox weergeven, en in normale code wacht ie dan op een respons:
code:
1
2
3
resp = msgbox("Wil je dit doen?", vbyesno,"vraag")
if resp = 6 then 'ja
  blabla...

Als ik zelf een form maak met twee knopjes (ja en nee), dan krijg je dit
code:
1
2
frm_vraag.show
...

en dan gaat ie direct door met het uitvoeren van de code eronder. Daar is vast wel een oplossing voor, maar die weet ik niet ;) En hoe speel ik trouwens terug (zonder allemaal global vars te gebruiken) wat de respons is van de gebruiker?

Verwijderd

Form.Show heeft 2 parameters. Als je bij de eerste vbModal stopt, dan stopt het programma totdat het form wordt gesloten...

Verwijderd

Topicstarter
Whuh? Dat heb ik helemaal nooit opgemerkt, terwijl ik toch die modal forms vaak gebruik! :) Kewl, ff proberen...

Verwijderd

Topicstarter
Maar dan nog... Als ik gewoon een 'label' control eringooi, kan ik daar nog geen gedeeltelijke kleuren mee gebruiken. De hele tekst wordt óf rood, óf groen, óf zwart, etc...
Is daar een oplossing voor? (naast dan natuurlijk meerdere labels gebruiken, wat enorm lastig is)

Verwijderd

Dan gebruik je ipv een label een richtextbox zonder border en grijze achtergrond :Y)

Verwijderd

Of je gebruikt gewoon Me.Print en steeds de Me.ForeColor wijzigen... :)

Kost zeker wat moeite, maar je hebt dan wel kleurtjes.

Verwijderd

Topicstarter
en in welke component zit die leuke richtextbox?

Verwijderd

Topicstarter
In de Microsoft Richttextbox control :) tnx guys, ff experimenteren!

  • Acid_Burn
  • Registratie: Augustus 2001
  • Laatst online: 21-08 11:09

Acid_Burn

uhuh

Op maandag 15 juli 2002 11:26 schreef CyberKnutselaar het volgende:
Ja, maar mijn probleem is als volgt:
code:
1
2
frm_vraag.show
...

en dan gaat ie direct door met het uitvoeren van de code eronder. Daar is vast wel een oplossing voor, maar die weet ik niet ;) En hoe speel ik trouwens terug (zonder allemaal global vars te gebruiken) wat de respons is van de gebruiker?
idd,
code:
1
frm_vraag.show 1

Glass Eye Photography | Zelfbouw wireless fightstick | Mijn puzzel site


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 02-09 09:31

Crazy D

I think we should take a look.

Op maandag 15 juli 2002 11:26 schreef CyberKnutselaar het volgende:
ik wil een msgbox weergeven, en in normale code wacht ie dan op een respons:
code:
1
2
3
resp = msgbox("Wil je dit doen?", vbyesno,"vraag")
if resp = 6 then 'ja
  blabla...
Daar heb je mooie constanten (enum) voor, die de boel wat leesbaarder maken... Ja is vbYes, voor de overige kijk je maar even in de VbMsgBoxResult enum ;)
En hoe speel ik trouwens terug (zonder allemaal global vars te gebruiken) wat de respons is van de gebruiker?
Zijn wel wat manieren voor, maar de makkelijkste en snelste is iets als dit:
In je dialoog-venster een private variabele maken, welke de returnvalue bevat (ja of nee dus in dit geval...). Die variabele zet je uiteraard als er op de betreffende button is geklikt, waarna je Unload Me doet.
Public functie maken die die form toont a la Me.Show vbModal. Eventueel kun je nog een parentform mee laten geven aan die functie (zie F1). Als eerste in die functie toon je dus jezelf (Me), daarna doe je functienaam = returnvaluevar. Werkt prima. En met een klein beetje creatief met knoppen kun je je form zo maken dat ie hetzelfde werkt als de msgbox, dus verschillende plaatjes, verschillende buttons, etc.
En aanroepen is dus iets als iResult = myDialog.doShow(Me), waarna je gezellig kan checken of iResult vbYes of vbNo is :)

Exact expert nodig?

Pagina: 1