* Volg ons


* Wie is Online

  • Punt gasten: 40
  • Punt verborgen: 0
  • Punt leden: 0

Er zijn geen bezoekers online

* Actuele onderwerpen

vista updaten door Peter
[17 september 2019, 20:38:55]


Hallo allemaal door Peter
[11 september 2019, 18:51:05]


nieuwe laptop is steeds traag door Peter
[10 september 2019, 21:07:20]


kan geen andere locatie kiezen met installatie van programma/patch door montana
[ 8 september 2019, 23:49:55]


tegels startmenu door Peter
[ 7 september 2019, 18:47:37]


koffie over laptop Dell door Peter
[ 6 september 2019, 23:58:23]


VERPLAATST: foto's terughalen digitale camera door Peter
[ 9 augustus 2019, 23:48:31]


foto's terughalen digitale camera door Peter
[ 9 augustus 2019, 23:47:43]


Opstart problemen door Boyo
[ 9 augustus 2019, 18:02:54]


Google Foto's door Just Vecht
[27 juli 2019, 21:37:34]


Firefox profielen door Peter
[27 juli 2019, 16:59:27]


Foto lichter maken door Peter
[27 juli 2019, 12:00:12]


firefox profielmappen door dvangenderen
[26 juli 2019, 19:32:53]


Foto lichter maken door dvangenderen
[25 juli 2019, 19:26:59]


wil cd niet branden door Peter
[24 juli 2019, 20:04:46]


PlayMemory Home (Sony) door Peter
[22 juli 2019, 18:07:43]


PC wordt steeds langzamer door Peter
[22 juli 2019, 18:07:01]


Google foto's google albumarchief albums door dvangenderen
[22 juli 2019, 16:57:12]


inloggen google account door Peter
[19 juli 2019, 23:22:18]


flits op foto achtergrond verwijderen door Leon
[18 juli 2019, 02:29:04]


* Chat

Vraag maar raak!
Stel je vragen over computers en internet en krijg direct antwoord! Iedere maandagavond 21:00 - 22:00 uur in de chatroom.


A A A A Auteur Topic: Visual Basic probleempje  (gelezen 7088 keer)

0 leden en 1 gast bekijken dit topic.

Offline NLCOMPTopic starter

  • Forumheld
  • *****
  • Berichten: 14.667
  • Laatst actief:
    30 mei 2010, 20:52:56

  • Activiteitmeter
    6.67%
    • NL Computer Forum
Visual Basic probleempje
« Gepost op: 8 november 2009, 23:11:57 »
Bericht 1 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:27-09-2004
 Aan:AllMsgID:1459.1
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Hoi,

Stel: Ik heb in VB6 twee forms, FrmInvoer en FrmKalender

Op FrmInvoer is een tekstboxje (Text1), en op FrmKalender is de Calendar Control (Calendar1) aanwezig.

Nu wil ik het volgende bereiken:

1: Als het tekstboxje in FrmInvoer leeg is, en ik klik er in, dan verschijnt de Kalender.
2: Pas als ik klik op een dag in de kalender, wordt de inhoud van het tekstboxje de gekozen kalenderdatum.
3: De kalender wordt hierna auto afgesloten.

Moet toch niet moeilijk zijn, maar het lukt mij niet. Het werk natuurlijk prima als textboxje en kalendertje op hetzelfde form staan, dat is het probleem niet. Het lukt mij ook wel om Calendar1.Value in Text1.text te zetten, maar niet om dat dmv. n klik op de juiste kalenderdag te doen. Voorkomen moet worden dat een klik in die tekstbox direct de huidige datum van de kalender plaatst. De correcte dag moet eerst gekozen worden.

Ik denk dat ik een focusprobleem oid heb.

Dus de code is iets in de geest van:

Private Sub Text1_click()
  If Trim(Text1.text) = "" Then
    FrmKalender.Visible = True
  If Geklikt = 1 Then
    Text1.text = FrmKalender.Calendar1.Value
    FrmKalender.Visible = False
    Geklikt = 0
  End If
End If
End Sub

Bij de Calendar Control de code:

Private Sub Calendar1_click()
  Geklikt=1
End Sub

Maar dan dus wl werkend <G>

Geklikt is een globale variabele, en wordt dus in beide forms gezien. Als er een fraaiere methode is om te zien of de kalender op het andere form is geklikt, dan is dat ook niet weg, maar even bijzaak.

Iemand een idee?

Michel Uphoff
(Sysop)

http://tinyurl.com/m8fp



Bericht 2 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:Tony de Jonge (Sysop)Datum:28-09-2004
 Aan:Michel Uphoff (Sysop)MsgID:1459.2
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Michel,Is het erg als ik je probleem niet helemaal begrijp? <g> >> Private Sub Text1_click() >> If Trim(Text1.text) = "" Then >> FrmKalender.Visible = True >> If Geklikt = 1 Then >> Text1.text = FrmKalender.Calendar1.Value >> FrmKalender.Visible = False >> Geklikt = 0 >> End If >> End If >> End SubBovenstaande heeft als effect dat de andere form wordt gedisplayed en er direct weer verder wordt gegaan nog voordat je een keuze hebt kunnen maken, er was geen klik dus helaas geen value naar text, is dat het probleem?Zou je iets van kunnen maken als:frmKalender.visible = true '-- Display andere formwhile frmKalender.Visible = true '-- Wacht zolang ander form is visible doeventsloopif frmKalender.geklikt = 1 then '-- Indien gekozen dan updaten Text1.text = FrmKalender.Calendar1.ValueendifBij de Calendar Control de code:Private Sub Calendar1_click() frmKalender.Geklikt=1 me.visible = falseEnd SubNu kan Geklikt gewoon in de frmKalender koemn te staan en hoeft niet meer global door de applicatie te gaan.Ik weet even niet welke kalender control je gebruikt, maar je zou zelfs er voor kunnen kiezen om bij een klik de value te setten en anders te resetten, of te voorkomen dat je zonder keuze de form kunt verlaten, dan heb je dat geklikt ook niet meer nodig want zoalng de form visible is wacht je gewoon. Misschien niet de meest fraaie, maar wel een efficiente methode die ik zelf regelmatig misbruik.Als je uitgebreidere uitleg wilt, prima, maar dan wil ik wel even wat meer code zien. Ik ben tegenwoordig dagelijks met dit soort zaken bezig, ook voor PocketPC indien iemand interesse heeft (kun je leuke dingen voor maken!). Ik wordt wel gek van VB.NET met CompactFramework, volgens mij heeft MS nog nooit iets slechters gemaakt, ik moet regelmatig m'n PC opnieuw starten omdat de .vb forms niet meer worden herkend en alleen nog de code zichtbaar is. Geef mij wat dat betreft maar gewoon VB6 en eVB, misschien wat achterhaald maar daar zitten niet meer zoveel ongewenste verrassingen in...Groeten,Tony


Bericht 3 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:28-09-2004
 Aan:Michel Uphoff (Sysop)MsgID:1459.3
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Hoi Michel,

Dit werkt niet omdat de Text1_Click() gewoon afgewerkt wordt nadat frmKalender zicht is geworden. Je code wordt dus vervolgd waar staat 'If Geklikt = 1 Then' maar is hier allang voorbij. Je moet of wachten totdat de gebruiker een keuze heeft gemaakt, of vanuit frmKalender, Text1 invullen maar dat wordt niet echt leesbare code.

Dit werkt wel,

Private Sub Text1_click()
  If Trim(Text1.Text) = "" Then
    'toon kalender en wacht op gebruikeractie...
     frmKalender.Show vbModal
   ' frmKalender.Visible = True
  If Geklikt = 1 Then
    Text1.Text = frmKalender.Calender1.Value
    ' frmKalender.Visible = False
    Geklikt = 0
  End If
End If
End Sub

Private Sub Calender1_DateClick(ByVal DateClicked As Date)
  Geklikt = 1
  Hide
End Sub

'dit is een mooiere oplossing:
(geen globale variabele nodig)

'frmInvoer
Option Explicit

Private Sub Text1_click()
  If Len(Text1.Text) = 0 Then
    frmKalender.Show vbModal
  If frmKalender.geklikt Then
    Text1.Text = frmKalender.Calender1.Value
  End If
End If
End Sub

'frmKalender
Option Explicit

Private dateclick As Boolean

Function geklikt() As Integer
  'gebruiker actie teruggeven
   geklikt = dateclick
End Function

Private Sub Calender1_DateClick(ByVal DateClicked As Date)
  'datum aangeklikt
   dateclick = True
   Hide
End Sub

Private Sub Form_Activate()
  dateclick = False
End Sub


groeten, Peter



Bericht 4 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:28-09-2004
 Aan:Tony de Jonge (Sysop)MsgID:1459.4
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Hoi Tony,

>> Is het erg als ik je probleem niet helemaal begrijp? <g> <<

Nee, dat is niet erg. Maar volgens mij begrijp je mijn probleem prima.

Natuurlijk! Stom! Dat ik daar een uur overheen keek! En ik maar kijken naar focus problemen, terwijl het domweg de verkeerde instructie voor het probleempje was, ik zou wel sneller dan het licht moeten kunnen klikken wil die tweede If..Then ooit true zijn.

Ik ga het even bekijken met een While .. Wend, of een Do.. While Loop, en dat zou toch moeten lukken.

Je hoort van mij terug.

>> Ik wordt wel gek van VB.NET met CompactFramework, volgens mij heeft MS nog nooit
iets slechters gemaakt <<

Met VB.Net heb ik gelukkig zelf nog niets gedaan, VB6 voldoet voor mij voorlopig nog uitstekend. Maar ik heb meer klachten gehoord over bugs en instabiliteit. De resulterende code is wel stabiel?

Michel Uphoff
(Sysop)

http://tinyurl.com/m8fp



Bericht 5 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:28-09-2004
 Aan:PeterMsgID:1459.5
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Hoi Peter,

Ik heb inmiddels goed begrepen, dat ik een nogal basaal kenmerk van de If..Then instructie over het hoofd zag <G>.

Met jouw voorbeeld ga ik ook even stoeien, je hoort van me.

Michel Uphoff
(Sysop)

http://tinyurl.com/m8fp



Bericht 6 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:Tony de Jonge (Sysop)Datum:28-09-2004
 Aan:Michel Uphoff (Sysop)MsgID:1459.6
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Michel,

>> VB6 voldoet voor mij voorlopig nog uitstekend.

Wij ontwikkelen o.a. onze kassasoftware ook met VB6, en daar kun je zeer stabiele producten mee maken als je een beetje weet wat je doet.

>> VB.NET bugs en instabiliteit. De resulterende code is wel stabiel?

Dat laatste weet ik eerlijk gezegd niet, simpelweg omdat ik het tot nu toe redelijk links heb kunnen laten liggen en VB6 of eVB3 (voor PocketPC) kunnen gebruiken. Ik ga aanstaande maand voor een project met VB.NET CF aan de slag...

TdJ


Bericht 7 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:28-09-2004
 Aan:PeterMsgID:1459.7
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Dag Peter,

frmKalender.Show vbModal

Door een modal form aan te roepen, disable je alle andere forms gedurende de tijd dat dat modal form in beeld is. Dat is eigenlijk niet de bedoeling, maar dat kon jij niet weten.

Maar jouw oplossing heeft niet het vervelende neveneffect dat gedurende de tijd dat die kalender control in beeld is er continue een While Wend loop de CPU zwaar belast.

Dit heb ik ervan gebakken, variabele "Geklikt" wordt de Boolean "CalClick", en ik plaats het terugzetten van deze variabele naar false buiten de geneste If..Then instructies. Zo werkt het naar wens.

Private Sub Text1_Click()
  If Trim(Text1.Text) = "" Then
    FrmKalender.Show vbModal
  If CalClick Then
    Text1.Text = FrmKalender.Calendar1.Value
  End If
End If
CalClick = False
End Sub

Private Sub Calendar1_Click()
  CalClick = True
  Me.Visible = False
End Sub

Ik ga nog even pieken of het noodzakelijk is dat gedurende de tijd dat die kalender control in beeld is, er nog iets op andere forms gedaan moet worden. Zo nee, dan is dit de mooiste oplossing.

Michel Uphoff
(Sysop)

http://tinyurl.com/m8fp



Bericht 8 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:28-09-2004
 Aan:Tony de Jonge (Sysop)MsgID:1459.8
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Hoi Tony,

Ik heb het als volgt, recht-toe-recht-aan opgelost:

Private Sub Text1_Click()
  If Trim(Text1.Text) = "" Then
    FrmKalender.Visible = True
    While Not CalClick
    DoEvents 'misschien hier een timer.. cpu zit dicht..
    Wend
    Text1.Text = FrmKalender.Calendar1.Value
    FrmKalender.Visible = False
  End If
CalClick = False
End Sub

FrmKalender:

Private Sub Calendar1_click()
  CalClick = True
End Sub

CalClick is vanzelfsprekend een Boolean.

Werkt prima zo, enige minpuntje is dat de While.. DoEvents .. Wend loop de processor volledig belast. Misschien moet ik er anders maar een timertje tussenzetten. Bijvoorbeeld een paar tienden van seconden, zodat de Cpu vrij komt voor ander werk. Of zie jij dat anders?

Peter kwam met een vbModal oplossing. Die is compacter, maar heeft als nadeel dat de andere forms dan disabled zijn. Toch vind ik die oplossing mooier omdat die belasting van de Cpu dan niet aanwezig is.
Dat DoEvents werkt lekker binnen de applicatie zelf, maar de .exe blijft de Cpu gewoon belasten, waardoor andere applicaties erg traag worden. Of is daar ook een trucje op, behalve een timer?

Michel Uphoff
(Sysop)

http://tinyurl.com/m8fp



Bericht 9 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:28-09-2004
 Aan:Michel Uphoff (Sysop)MsgID:1459.9
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Hoi Michel,

>>modal form disable je alle andere forms.

Ja nou en, zo dwing je de gebruiker wel jou gedachtengang ofwel programmavolgorde te volgen. Acties zoals timers lopen op uitgeschakelde toch gewoon door.

Als Text1 dus pas gevuld hoeft te worden op een Calender1_Click() zou je dus ook dit kunnen doen:

Sub Calender1_Click()
  frmInvoer.Text1.Text = Calender1.Value
End Sub

en,

Sub Text1.Click()
  If Len(Text1.Text) = 0 then frmKalender.Show
End Sub

Blijft bijna niks over :-)

groeten, Peter



Bericht 10 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:29-09-2004
 Aan:PeterMsgID:1459.10
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Hoi Peter,

Ach natuurlijk. Waarom makkelijk doen als het ook ingewikkeld kan?

Ander vraagje: Ik wil de vb kleuren van elementen terug rekenen naar RGB. Nu zie ik dat VB de hexcode afkapt indien er alleen maar trailing nullen zijn. Dat valt allemaal wel weer met wat code op te lossen, maar weet jij misschien een simpele manier om deze kleuren eenvoudig om te zetten naar 3 keer (1-255) RGB waarden?

Michel Uphoff
(Sysop)

http://tinyurl.com/m8fp



Bericht 11 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:30-09-2004
 Aan:Michel Uphoff (Sysop)MsgID:1459.11
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
hoi Michel,

>>Ik wil de vb kleuren van elementen terug rekenen naar RGB...

API TranslateColor al eens geprobeerd?

Function RGBcolor(c) As Long
  'converteer OLE kleur naar RGB kleur
   TranslateColor c, 0, RGBcolor
End Function
voorbeeld aanroepen functie:
x = RGBcolor(Me.BackColor)
x = RGBcolor(vbGreen)

x is nu een RGB waarde (long). De afzonderlijke waardes op te vragen met:

r = x And &HFF&
g = (x And &HFF00&) / 2 ^ 8
b = (x And &HFF000) / 2 ^ 16

groeten, Peter


Bericht 12 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:Tony de Jonge (Sysop)Datum:30-09-2004
 Aan:Michel Uphoff (Sysop)MsgID:1459.12
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Michel,

>> een vbModal oplossing

Werkt op zich prima, als je echter forms 'pre-load' moet je verdomd goed nadenken welke form je modal en welke non-modal wilt hebben. Dat gedrag van die CPU overload is inderdaad een 'probleem'. Zelf heb ik dat inderdaad met een timer opgelost, een of andere class die ik (of een collega?) ooit eens heb gemaakt en met elk nieuw project ongeveer standaard meeverhuisd... (zoek even op waitable timer, er is vast iets over te vinden via Google).

Als je wilt dat die gebruiker gewoon niets anders gaat doen is die 100% niet zo'n groot probleem...<g>

TdJ

PS: Inmiddels zag ik de andere oplossing, tsja, inderdaad, soms kan het heel eenvoudig zijn maar dat hangt van de context af.


Bericht 13 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:01-10-2004
 Aan:PeterMsgID:1459.13
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Dag Peter,

>> API TranslateColor al eens geprobeerd <<

Nee, ga ik even doen. Simpel is anders, maar het is Ms, dus waarom makkelijk als het lastig kan. Bedankt voor het voorbeeldje.

Nog een vreemd probleempje:

Gebruikte control:
Ms windows common controls-2 6.0 (Sp6)
MSCOMCT2.OCX
en daarvan de Monthview


Form1 (met een button, command1)
Private Sub Command1_Click()
FrmAgenda.Visible = True
End Sub

FrmAgenda (met die monthview kalender, en een button, command1)
Private Sub Command1_Click()
Me.Visible = False
End Sub

De button op dit form moet (na gebruik van die kalender) twee keer geklikt worden, wil dit form onzichtbaar worden. Gegeven oersimpel voorbeeld werkt bij mij dus al met dit probleempje.

Foutje in de control?
Enig idee van de reden?

Michel Uphoff
(Sysop)

http://tinyurl.com/m8fp



Bericht 14 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:01-10-2004
 Aan:Michel Uphoff (Sysop)MsgID:1459.14
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
hallo Michel,

>>Foutje in de control?
Enig idee van de reden?

Geen foutje maar heel logisch.
Als je op de calender klikt krijgt deze de focus. Als je daarna op de knop klikt krijgt de knop weer de focus. Een 2e klik op deze knop voert dus pas het klik event van deze knop uit.

De oplossing is dan ook simpel:
Na een klik op de calender de focus alvast op de knop zetten.

Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
Command1.SetFocus
End Sub

Nog een kleine opmerking:
Ik weet niet of er nog meer code in frmAgenda staat. De volgorde van controls plaatsen in het formulier is wel belangrijk. Als namelijk Command1.TabIndex>0 is, heeft Command1 NIET de focus bij de allereerste keer dat frmAgenda verschijnt en moet je dus 2 keer klikken als je direkt wilt stoppen.

groeten, Peter


Bericht 15 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:02-10-2004
 Aan:PeterMsgID:1459.15
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Dag Peter,

Bedankt alweer.

Dat het een focus probleempje betreft had ik inmiddels ook begrepen, maar als de kalender niet wordt aangeklikt, moet ik ook 2x de command aanklikken. Dus ook dan moet die button de focus hebben, dat gaat echter niet tijdens formload, dat geeft een error.

Wat ik niet goed begrijp, is dat het met de Mscal.ocx (calendar control 8) niet hoefde. Kennelijk steelt dat ding dus niet standaard de focus? Kan ik dat focus stelen van die monthview niet uitschakelen?

Michel Uphoff
(Sysop)

http://tinyurl.com/m8fp



Bericht 16 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:02-10-2004
 Aan:Michel Uphoff (Sysop)MsgID:1459.16
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
hoi Michel,

>>maar als de kalender niet wordt aangeklikt, moet ik ook 2x de command aanklikken. Dus ook dan moet die button de focus hebben, dat gaat echter niet tijdens formload, dat geeft een error.

Kan wel, maar niet met Command1.SetFocus omdat Command1 tijdens formload nog niet zichtbaar is.

Oplossing 1:
Private Sub Form_Load()
'Command1 krijgt de focus als formulier geladen wordt
Command1.TabIndex = 0
End Sub

Oplossing 2:
Private Sub Form_Activate()
'Command1 krijgt de focus als formulier actief wordt
Command1.SetFocus
End Sub

Oplossing 3:
in de IDE, de propertie TabIndex van Command1 op 0 zetten.

Oplossing 3 kost geen extra code maar kan na een formulier aanpassing mogelijk verloren gaan
Oplossing 2 is het handigste en duidelijkste maar wordt bij elke start uigevoerd
Oplossing 1 doet hetzelfde als Oplossing 3 maar dan softwarematig en ook maar 1 keer

groeten, Peter



Bericht 17 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:02-10-2004
 Aan:PeterMsgID:1459.17
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Dag Peter,

>> in de IDE, de propertie TabIndex van Command1 op 0 zetten. <<

Ach so!, en dat stond hij bij mijn vorige oefeningetje met MsCal.Ocx natuurlijk wel.
Dus met TabIndex beinvloed je niet alleen de volgorde maar zet je en passant ook de focus.
Ik zie dat ook tijdens design-time de IDE er keurig voor zorgt dat er geen twee elementen met dezelfde TabIndex kunnen zijn. Maar het lijkt mij inderdaad verstandiger om dat via code echt vast te leggen om vervelende verassingen te voorkomen.

Bedankt alweer, nu schiet het tenminste op.

Michel Uphoff
(Sysop)

http://tinyurl.com/m8fp



Bericht 18 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:03-10-2004
 Aan:Michel Uphoff (Sysop)MsgID:1459.18
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
hoi Michel,

>>Ik zie dat ook tijdens design-time de IDE er keurig voor zorgt dat er geen twee elementen met dezelfde TabIndex kunnen zijn.

Inderdaad, met de TAB toets wordt eigenlijk de propertie .TabIndex verhoogt en dat control krijgt dan de focus. 2 keer dezelfde .Tabindex waarde kan dus gewoon niet.

>>en dat stond hij bij mijn vorige oefeningetje met MsCal.Ocx natuurlijk wel.

Mogelijk, maar er is inderdaad een verschil bij een muisklik op MsCal en MonthView (MV) control. MV lijkt een muisklik buiten zichzelf 'op te eten'. MV wordt eerst opnieuw getekend en daarna wordt de focus verplaatst naar het control dat je aanklikte (in dit geval Command1).
MsCal wordt wel gewoon beeindigd en de muisklik op Command1 wordt dan ook meteen uitgevoerd.

groeten, Peter


Bericht 19 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:03-10-2004
 Aan:PeterMsgID:1459.19
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
>> b = (x And &HFF000) / 2 ^ 16 <<

Dag Peter, er stond een nulletje te weinig in. Maar ik heb het werkend.
Overigens, er zijn nog wat manieren om die (m.i. nogal vreemd gemplementeerde) kleuren weer in RGB om te zetten zag ik. Zo heb ik ook geprobeerd:

Private Declare Function OleTranslateColor Lib "OLEPRO32.DLL" (ByVal OLE_COLOR _
As Long, ByVal HPALETTE As Long, pccolorref As Long) As Long

Function TranslateColor(ByVal clr As Long) As Long
  If OleTranslateColor(clr, 0, TranslateColor) Then
    TranslateColor = -1
  End If
End Function

Private Sub OptDagKleur_Click()
  x = TranslateColor(FrmNotes.Dag.ForeColor)
  ScrollKleur(0).Value = x And &HFF&
  ScrollKleur(1).Value = (x And &HFF00&) / 2 ^ 8
  ScrollKleur(2).Value = (x And &HFF0000) / 2 ^ 16
End Sub

Werkt prima,

Ik kan ook de kleuren inlezen in een string variabele, zelf uitformatteren (dus nullen toevoegen indien nodig) tot 3 x 2 Hex, en met left/mid/right strings de boel inlezen en omzetten in 3 x 255 decimaal.

Ziet er wat knullig uit, maar werkt ook.

Maar wat valt nu te prefereren (afgezien van de codelengte), en waarom?

Michel Uphoff
(Sysop)

http://tinyurl.com/m8fp



Bericht 20 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:03-10-2004
 Aan:Michel Uphoff (Sysop)MsgID:1459.20
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
hoi+Michel,

>>Maar+wat+valt+nu+te+prefereren+(afgezien+van+de+codelengte),+en+waarom?

Snap+je+vraag+niet+helemaal.+Kleurcode+omzetten+naar+3+*+255+of+gebruik+maken+van+HEX-string?

Voor+opslag/inlezen+in+een+.INI+bestand+oid+lijkt+me+de+omrekening+naar+3+*+255+overbodig.
Bewaar+gewoon+de+longwaarde+of+de+HEXwaarde.

Mocht+je+de+3+afzonderlijke+kleuren+willen+uitsplitsen+maakt+het+naar+mijn+mening+niet+veel+uit+of+je+dat+via+een+string+of+een+getal+doet.
Getal+berekening+lijkt+me+sneller+dan+string+bewerkingen+maar+is+met+de+huidige+pc's+minder+van+belang.+En+waarom+de+omweg;+long+>+string+>+3+*+substring+>+3+*+bytes,+ipv+long+>+3+*+bytes

Je+zegt+zelf+'Ziet+er+wat+knullig+uit...'.
Zet+duidelijke+commentaar+regels+in+je+code,+eventueel+aangevuld+met+een+voorbeeldje.

groeten,+Peter


Bericht 21 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:03-10-2004
 Aan:PeterMsgID:1459.21
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
hmm,

Wat moeten al die plusjes in mijn berichtje?




Bericht 22 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:Maurice OffermansDatum:03-10-2004
 Aan:PeterMsgID:1459.22
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Hoi Peter,

Dat is een bug in de forumsoftware! ;-)

Groeten,

Maurice



Bericht 23 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:04-10-2004
 Aan:PeterMsgID:1459.23
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Dag Peter,

Dat zijn automatisch uitgedeelde digitale pluimpjes die mensen bij snel en goed reageren krijgen. ;-)

Een vreemde bug, zit al tijden in de software.

Michel Uphoff
(Sysop)

http://tinyurl.com/m8fp



Bericht 24 van 24

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:04-10-2004
 Aan:Michel Uphoff (Sysop)MsgID:1459.24
 Onderwerp:Visual Basic probleempjeForum:ws-nlcomputer
Ha Michel,

>>digitale pluimpjes...

Oke dan :-)

Peter


 

Gerelateerde onderwerpen

  Onderwerp / Gestart door Reacties Laatste bericht
2 Reacties
7667 Gelezen
Laatste bericht 1 maart 2010, 23:02:20
door jvdpeet
3 Reacties
5409 Gelezen
Laatste bericht 3 mei 2010, 22:41:12
door Ronald
11 Reacties
6005 Gelezen
Laatste bericht 31 december 2012, 15:17:20
door Ferna
0 Reacties
5872 Gelezen
Laatste bericht 24 januari 2014, 17:42:20
door jackson0
32 Reacties
11889 Gelezen
Laatste bericht 7 april 2014, 18:11:16
door Peter
3 Reacties
6145 Gelezen
Laatste bericht 3 mei 2014, 20:44:10
door Peter
2 Reacties
5617 Gelezen
Laatste bericht 24 april 2015, 18:23:24
door Peter
2 Reacties
5595 Gelezen
Laatste bericht 7 september 2015, 17:42:15
door jackson0
1 Reacties
4919 Gelezen
Laatste bericht 15 mei 2017, 21:36:29
door Peter
1 Reacties
4292 Gelezen
Laatste bericht 1 maart 2018, 13:02:34
door Boyo