-
Notifications
You must be signed in to change notification settings - Fork 3
/
glis4.ctl
7712 lines (7214 loc) · 253 KB
/
glis4.ctl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
VERSION 5.00
Begin VB.UserControl gList
Appearance = 0 'Flat
AutoRedraw = -1 'True
BackColor = &H00000000&
ClientHeight = 7800
ClientLeft = 0
ClientTop = 0
ClientWidth = 7245
ClipBehavior = 0 'None
ControlContainer= -1 'True
FillColor = &H80000002&
FillStyle = 0 'Solid
BeginProperty Font
Name = "Arial"
Size = 9
Charset = 161
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
KeyPreview = -1 'True
MousePointer = 1 'Arrow
OLEDropMode = 1 'Manual
PropertyPages = "glis4.ctx":0000
ScaleHeight = 7800
ScaleWidth = 7245
Begin VB.Timer BlinkTimer
Enabled = 0 'False
Interval = 10000
Left = 1590
Top = 855
End
Begin VB.Timer Timer2bar
Enabled = 0 'False
Interval = 100
Left = 2745
Top = 2565
End
Begin VB.Timer Timer1bar
Enabled = 0 'False
Interval = 400
Left = 1950
Top = 1710
End
Begin VB.Timer Timer3
Enabled = 0 'False
Interval = 1
Left = 5475
Top = 3585
End
Begin VB.Timer Timer2
Enabled = 0 'False
Interval = 20
Left = 5505
Top = 1035
End
Begin VB.Timer Timer1
Enabled = 0 'False
Interval = 10
Left = 5940
Top = 2595
End
End
Attribute VB_Name = "gList"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
' use of Extender
Option Explicit
Dim waitforparent As Boolean
Dim havefocus As Boolean, UKEY$
Dim dummy As Long
Dim nopointerchange As Boolean
Dim PrevLocale As Long
Private Type Myshape
Visible As Boolean
hatchType As Long
top As Long
Left As Long
Width As Long
Height As Long
End Type
Private mynum$, dragslow As Long, lastshift As Integer, HandleOverride As Boolean
Private lastEditFlag As Boolean, SkipReadEditflag As Boolean
Public BypassKey As Boolean, AdjustColumns As Boolean
Public BlinkON As Boolean, prive As Long
Private mBlinkTime As Long, AdjustColumn As Integer, AdjustColumnSum As Long
Public UseTab As Boolean
Public InternalCursor As Boolean, SkipChars As Long
Public OverrideShow As Boolean
Public HideCaretOnexit As Boolean, blockheight As Boolean
Public overrideTextHeight As Long
Public AutoHide As Boolean, NoWheel As Boolean
Private missMouseClick As Boolean
Public bypassfirstClick As Boolean, Grid As Boolean, GridColor As Long
Private Shape1 As Myshape, Shape2 As Myshape, Shape3 As Myshape
Private Type RECT
Left As Long
top As Long
Right As Long
Bottom As Long
End Type
Private Enum flagtype
fselected = 1
fchecked = 2
fradiobutton = 4
fline = 8
joinpRevline = 16 ' if this is true means we have a join with previous row.
End Enum
Private Type itemlist
flags As Integer ' selected
morerows As Integer ' pixels??? not used now
content As JsonObject
End Type
Private ehat$, JoinLines As Long
Private fast As Boolean
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal iCapabilitiy As Long) As Long
Private Const LOGPIXELSX = 88
Private Const LOGPIXELSY = 90
Private Declare Function GdiFlush Lib "gdi32" () As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Private Declare Function SetBkColor Lib "gdi32" (ByVal hDC As Long, ByVal crColor As Long) As Long
Private Declare Function CreateHatchBrush Lib "gdi32" (ByVal nIndex As Long, ByVal crColor As Long) As Long
Private Declare Function CopyFromLParamToRect Lib "user32" Alias "CopyRect" (lpDestRect As RECT, ByVal lpSourceRect As Long) As Long
Private Declare Function DestroyCaret Lib "user32" () As Long
Private Declare Function CreateCaret Lib "user32" (ByVal hWnd As Long, ByVal hBitmap As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function ShowCaret Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function SetCaretPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function HideCaret Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function DrawTextEx Lib "user32" Alias "DrawTextExW" (ByVal hDC As Long, ByVal lpsz As Long, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long, ByVal lpDrawTextParams As Long) As Long
Private Declare Function DrawText Lib "user32" Alias "DrawTextW" (ByVal hDC As Long, ByVal lpStr As Long, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
Private Declare Function FillRect Lib "user32" (ByVal hDC As Long, lpRect As RECT, ByVal hBrush As Long) As Long
Private Declare Function FrameRect Lib "user32" (ByVal hDC As Long, lpRect As RECT, ByVal hBrush As Long) As Long
Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
Private Declare Function CreateRectRgnIndirect Lib "gdi32" (ByRef lpRect As RECT) As Long
Private Declare Function SelectClipRgn Lib "gdi32" (ByVal hDC As Long, ByVal hRgn As Long) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function Ellipse Lib "gdi32" (ByVal hDC As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long) As Long
Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long) As Long
Private Declare Sub GetMem2 Lib "msvbvm60" (ByVal Addr As Long, retval As Integer)
Private Const PS_NULL = 5
Private Const PS_SOLID = 0
Public restrictLines As Long, UseHeaderOnly As Boolean
Private nowX As Single, nowY As Single
Private marvel As Boolean
Private Const DT_BOTTOM As Long = &H8&
Private Const DT_CALCRECT As Long = &H400&
Private Const DT_CENTER As Long = &H1&
Private Const DT_EDITCONTROL As Long = &H2000&
Private Const DT_END_ELLIPSIS As Long = &H8000&
Private Const DT_EXPANDTABS As Long = &H40&
Private Const DT_EXTERNALLEADING As Long = &H200&
Private Const DT_HIDEPREFIX As Long = &H100000
Private Const DT_INTERNAL As Long = &H1000&
Private Const DT_LEFT As Long = &H0&
Private Const DT_MODIFYSTRING As Long = &H10000
Private Const DT_NOCLIP As Long = &H100&
Private Const DT_NOFULLWIDTHCHARBREAK As Long = &H80000
Private Const DT_NOPREFIX As Long = &H800&
Private Const DT_PATH_ELLIPSIS As Long = &H4000&
Private Const DT_PREFIXONLY As Long = &H200000
Private Const DT_RIGHT As Long = &H2&
Private Const DT_SINGLELINE As Long = &H20&
Private Const DT_TABSTOP As Long = &H80&
Private Const DT_TOP As Long = &H0&
Private Const DT_VCENTER As Long = &H4&
Private Const DT_WORDBREAK As Long = &H10&
Private Const DT_WORD_ELLIPSIS As Long = &H40000
Const m_def_Text = vbNullString
Const m_def_BackColor = &HFFFFFF
Const m_def_ForeColor = 0
Const m_def_Enabled = False
Const m_def_BackStyle = 0
Const m_def_BorderStyle = 0
Const m_def_dcolor = &H333333
Const m_def_CapColor = &HAAFFBB
Const m_def_Showbar = True
Const m_def_sync = vbNullString
Dim m_sync As String
Dim m_BackColor As Long
Dim m_ForeColor As Long
'Dim m_Enabled As Boolean
Dim m_font As Font
Dim m_BackStyle As Integer
Dim m_BorderStyle As Integer
Dim m_CapColor As Long
Dim m_dcolor As Long
Dim m_showbar As Boolean
Dim mParts() As Long
Dim mTabs As Long, mLeftTab As Long, mCurTab As Long, TwipsCurTab As Long
Dim mList() As itemlist
Dim topitem As Long
Dim itemcount As Long
Dim Mselecteditem As Long, dragfocus As Boolean
Event RealCurReplace(a$)
Event DragOverCursor(ok As Boolean)
Event OnResize()
Event selected(item As Long)
Event SelectedMultiAdd(item As Long)
Event SelectedMultiSub(item As Long)
Event Selected2(item As Long)
Event softSelected(item As Long)
Event ValidMove(X As Single, Y As Single)
Event Maybelanguage()
Event MouseUp(X As Single, Y As Single)
Event SpecialColor(RGBcolor As Long)
Event RemoveOne(that As String)
Event PushMark2Undo(that As String)
Event PushUndoIfMarked()
Event addone(that As String)
Event getpair(a$, b$)
Event MayRefresh(ok As Boolean)
Event CheckGotFocus()
Event CheckLostFocus()
Event DragData(ThatData As String)
Event DragPasteData(ThatData As String)
Event DropOk(ok As Boolean)
Event DropFront(ok As Boolean)
Event ScrollMove(item As Long)
Event RefreshDesktop()
Event PrepareContainer()
Event NeedDoEvents()
Event OutPopUp(X As Single, Y As Single, myButton As Integer)
Event SplitLine()
Event LineUp()
Event LineDown()
Event PureListOn()
Event PureListOff()
Event HaveMark(Yes As Boolean)
Event GroupUndo()
Event MarkCut(ThatData As String)
Event markin()
Event MarkOut()
Event MarkDestroyAny()
Event MarkDestroy()
Event MarkDelete(preservecursor As Boolean)
Event WordMarked(ThisWord As String)
Event ShowExternalCursor()
Event ChangeSelStart(thisselstart As Long)
Event ReadListItem(item As Long, content As String)
Event ChangeListItem(item As Long, content As String)
Event HeaderSelected(Button As Integer)
Event BlockCaret(item As Long, blockme As Boolean, skipme As Boolean)
Event ScrollSelected(item As Long, Y As Long)
Event MenuChecked(item As Long)
Event PromptLine(ThatLine As Long)
Event PanLeftRight(direction As Boolean)
Event GetBackPicture(pic As Object)
Event KeyDown(keycode As Integer, shift As Integer)
Event KeyDownAfter(keycode As Integer, shift As Integer)
Event SyncKeyboard(item As Integer)
Event SyncKeyboardUnicode(a$)
Event PreviewKeyboardUnicode(ByRef a$)
Event Find(Key As String, where As Long, skip As Boolean)
Event ExposeRect(ByVal item As Long, ByVal thisrect As Long, ByVal thisHDC As Long, skip As Boolean)
Event ExposeRectCol(ByVal item As Long, ByVal Col As Long, ByVal thisrect As Long, ByVal thisHDC As Long, skip As Boolean)
Event ExposeListcount(cListCount As Long)
Event ExposeItemMouseMove(Button As Integer, ByVal item As Long, ByVal X As Long, ByVal Y As Long)
Event GetRealX1(mHdc As Long, ByVal ExtSelStart As Long, ByVal that$, retvalue As Long, ok As Boolean)
Event MouseMove(Button As Integer, shift As Integer, X As Single, Y As Single)
Event SpinnerValue(ThatValue As Long)
Event RegisterGlist(this As gList)
Event UnregisterGlist()
Event DeployMenu()
Event CascadeSelect(item As Long) ' 1 based
Event BlinkNow(Face As Boolean)
Event CtrlPlusF1()
Event EnterOnly()
Event RefreshOnly()
Event CorrectCursorAfterDrag()
Event DragOverNow(a As Boolean)
Event DragOverDone(a As Boolean)
Event HeadLineChange(a$)
Event AddSelStart(val As Long, shift As Integer)
Event SubSelStart(val As Long, shift As Integer)
Event rtl(thisHDC As Long, item As Long, where As Long, mark10 As Long, mark20 As Long, Offset As Long)
'Event RTL2(s$, where As Long, mark10 As Long, mark20 As Long, Offset As Long)
Event DelExpandSS()
Event SetExpandSS(val As Long)
Event ExpandSelStart(val As Long)
Event Fkey(a As Integer)
Event CaretDeal(Deal As Long)
Event AccKey(m As Long)
Event ReadColumnItem(item As Long, Col As Long, content As String)
Event ReadColumnProp(item As Long, Col As Long, Prop As String, content As String)
Event ReadColumnPropNum(item As Long, Col As Long, Prop As String, content)
Event ChangeColumnListItem(item As Long, Col As Long, content As String)
Event WindowKey(VbKeyThis As Integer)
Private state As Boolean
Private secreset As Boolean
Private scrollme As Long
Private lY As Long, dr As Boolean
Private drc As Boolean
Private scrTwips As Single
Private cy As Long
Private cx As Long
Dim myt As Long, FaceBlink As Boolean
Dim mytPixels As Long
' for not moving rows/columns
Public TopRows As Long, LeftColumns As Long
Public NoMoveDrag As Boolean, NarrowSelect As Boolean
Public BarColor As Long
Public BarHatch As Long
Public BarHatchColor As Long
Public LeaveonChoose As Boolean
Public BypassLeaveonChoose As Boolean
Public LastSelected As Long
Public NoPanLeft As Boolean
Public NoPanRight As Boolean
Private LastVScroll As Long
Public FreeMouse As Boolean
Public NoCaretShow As Boolean
Public NoBarClick As Boolean
Public NoEscapeKey As Boolean
Public InfoDropBarClick As Boolean
Dim valuepoint As Long, minimumWidth As Long
Dim mValue As Long, mmax As Long, mmin As Long, mLargeChange As Long ' min 1
Dim mSmallChange As Long ' min 1
Dim mVertical As Boolean
Dim OurDraw As Boolean, GetOpenValue As Long
Dim lastX As Single, LastY As Single
Private mjumptothemousemode As Boolean
Private mpercent As Single
Private BarWidth As Long
Private NoFire As Boolean
Public addpixels As Long
Public StickBar As Boolean
Dim Hidebar As Boolean
Dim myEnabled As Boolean
Public WrapText As Boolean
Public CenterText As Boolean, RightText As Boolean
Public VerticalCenterText As Boolean
Private mHeadline As String
Private mHeadlineHeight As Long
Private mHeadlineHeightTwips As Long
Public MultiSelect As Boolean
Public LeftMarginPixels As Long
Dim Buffer As Long
Public FloatList As Boolean
Public MoveParent As Boolean
Public BlockItemcount As Boolean
Private useFloatList As Boolean
Public NoVerMove As Boolean, NoHorMove As Boolean
Public HeadLineHeightMinimum As Long
Private mPreserveNpixelsHeaderRight As Long
Public AutoPanPos As Boolean ' used if we have no EditFlag
Public FloatLimitLeft As Long
Public FloatLimitTop As Long
Public mEditFlag As Boolean
Public mSortstyle As Integer
Public SingleLineSlide As Boolean
Private mSelstart As Long
Private caretCreated As Boolean
Public MultiLineEditBox As Boolean
Public NoScroll As Boolean
Public MarkNext As Long ' 0 - markin, 1- Markout
Public Noflashingcaret As Boolean
Public NoFreeMoveUpDown As Boolean ' if true then keyup and keydown scroll up down the list
Public PromptLineIdent As Long ' to be a console we need prompt line to have some chars untouch perhaps this ">"
Public FadeLastLinePart As Long ' if is zero then no use at all
Public LastLinePart As String
Public Spinner As Boolean ' if true and restrictline =1 - we have events for up down values
Public maxchar As Long ' for non multiline
Public WordCharLeft As String
Public WordCharRight As String
Public WordCharRightButIncluded As String
Public WordCharLeftButIncluded As String
Public DropEnabled As Boolean
Public DragEnabled As Boolean, NoArrowUp As Boolean, NoArrowDown As Boolean, Arrows2Tab As Boolean
Public NoHeaderBackground As Boolean
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoW" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As Long, ByVal cchData As Long) As Long
Private Declare Function GetKeyboardLayout& Lib "user32" (ByVal dwLayout&) ' not NT?
Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Private Const DWL_ANYTHREAD& = 0
Const LOCALE_ILANGUAGE = 1
Private Declare Function PeekMessageW Lib "user32" (lpMsg As Msg, ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
Const WM_KEYFIRST = &H100
Const WM_CHAR = &H102
Const WM_KEYLAST = &H108
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Type Msg
hWnd As Long
Message As Long
wParam As Long
lParam As Long
time As Long
pt As POINTAPI
End Type
Private timestamp As Double, timestamp1 As Double
Private doubleclick As Long, preservedoubleclick As Long
Private dbLx As Long, dbly As Long
Private PX As Long, PY As Long
Public SkipForm As Boolean
Public DropKey As Boolean
Public MenuGroup As String
Private mTabStop As Boolean
Private oldpointer As Integer
Private himc As Long
Private Const VK_PROCESSKEY = &HE5
Private Const GCS_COMPREADSTR = &H1
Private Const GCS_RESULTSTR = &H800
Private Const GCS_COMPSTR = &H8
Private leave As Long
Private Type DRAWTEXTPARAMS
cbSize As Long
iTabLength As Long
iLeftMargin As Long
iRightMargin As Long
uiLengthDrawn As Long
End Type
Dim tParam As DRAWTEXTPARAMS
Public SuspDraw As Boolean
Private Type TEXTMETRICW
tmHeight As Long
tmAscent As Long
tmDescent As Long
tmInternalLeading As Long
tmExternalLeading As Long
tmAveCharWidth As Long
tmMaxCharWidth As Long
tmWeight As Long
tmOverhang As Long
tmDigitizedAspectX As Long
tmDigitizedAspectY As Long
tmFirstChar As Integer
tmLastChar As Integer
tmDefaultChar As Integer
tmBreakChar As Integer
tmItalic As Byte
tmUnderlined As Byte
tmStruckOut As Byte
tmPitchAndFamily As Byte
tmCharSet As Byte
End Type
Private TM As TEXTMETRICW
Private Declare Function GetTextMetrics Lib "gdi32" Alias "GetTextMetricsW" (ByVal hDC As Long, lpMetrics As TEXTMETRICW) As Long
Private LastNumX As Boolean
Public Function GetLastKeyPressed() As Long
Dim Message As Msg
If mynum$ <> "" Then
GetLastKeyPressed = -1
ElseIf PeekMessageW(Message, 0, WM_CHAR, WM_KEYLAST, 0) Then
GetLastKeyPressed = Message.wParam
Else
GetLastKeyPressed = -1
End If
End Function
Public Property Let HeadlineHeight(ByVal RHS As Long)
If HeadLine <> "" Then
mHeadlineHeight = RHS
mHeadlineHeightTwips = CLng(RHS * scrTwips)
Else
mHeadlineHeight = 0
mHeadlineHeightTwips = 0
End If
End Property
Public Property Get HeadlineHeightTwips() As Long
'' for dynamic controls
If HeadLine <> "" Then
HeadlineHeightTwips = CLng(mHeadlineHeight * scrTwips)
Else
HeadlineHeightTwips = myt
End If
End Property
Public Property Get HeadlineHeight() As Long
If HeadLine <> "" Then
HeadlineHeight = mHeadlineHeight
Else
HeadlineHeight = 0
End If
End Property
Public Property Let HeadLine(ByVal RHS As String)
If mHeadline = vbNullString Then
' reset headlineheight
RaiseEvent HeadLineChange(RHS)
mHeadline = RHS
HeadlineHeight = UserControlTextHeightPixels()
Exit Property
End If
mHeadline = RHS
End Property
Public Property Get HeadLine() As String
HeadLine = mHeadline
End Property
Public Sub PrepareToShow(Optional Delay As Single = 10)
BarWidth = UserControlTextWidth("W")
CalcAndShowBar1
Timer1.enabled = False
If Delay < 1 Then Delay = 1
If fast Then
fast = False
Timer1.Interval = Delay
Else
Timer1.Interval = Delay * 5
End If
Timer1.enabled = True
End Sub
Public Sub PressSoft()
secreset = False
RaiseEvent Selected2(SELECTEDITEM - 1)
End Sub
Public Property Get ScrollFrom() As Long
ScrollFrom = topitem
End Property
Public Property Get BorderStyle() As Integer
BorderStyle = m_BorderStyle
End Property
Public Property Let BorderStyle(ByVal RHS As Integer)
m_BorderStyle = RHS
If BackStyle = 0 Then UserControl.BorderStyle = -(m_BorderStyle <> 0) Else UserControl.BorderStyle = 0
PropertyChanged "BorderStyle"
End Property
Public Property Get sync() As String
sync = m_sync
End Property
Public Property Let sync(ByVal New_sync As String)
If Ambient.UserMode Then Err.Raise 393
m_sync = New_sync
PropertyChanged "sync"
End Property
Public Property Get hWnd() As Long
hWnd = UserControl.hWnd
End Property
Public Property Let Text(ByVal new_text As String)
Clear True
If mParts(1) = 0 Then mParts(1) = Me.WidthPixels
If new_text <> "" Then
If Right$(new_text, 2) <> vbCrLf And new_text <> "" Then
new_text = new_text + vbCrLf
End If
Dim mpos As Long, b$
Do
b$ = GetStrUntilB(mpos, vbCrLf, new_text)
additemFast b$ ' and blank lines
Loop Until mpos > Len(new_text) Or mpos = 0
End If
If GetTopUserControl(Me).Ambient.UserMode = False Then
Repaint
SELECTEDITEM = 0
CalcAndShowBar
ShowMe
End If
PropertyChanged "Text"
End Property
Public Sub AddTextColumn(ByVal thiscolumn As Long, ByVal new_text As String)
If thiscolumn < 1 Then thiscolumn = 1
If thiscolumn > mTabs Then mTabs = thiscolumn: ReDim Preserve mParts(1 To mTabs)
If new_text <> "" Then
If Right$(new_text, 2) <> vbCrLf And new_text <> "" Then
new_text = new_text + vbCrLf
End If
Dim mpos As Long, b$, i As Long
i = 0
Do
If i < itemcount Then
With mList(i)
If .content Is Nothing Then Set .content = New JsonObject
.content.AssignPath "C." & thiscolumn, GetStrUntilB(mpos, vbCrLf, new_text)
.flags = 0
End With
i = i + 1
End If
Loop Until mpos > Len(new_text) Or mpos = 0 Or i > itemcount
End If
If GetTopUserControl(Me).Ambient.UserMode = False Then
Repaint
SELECTEDITEM = 0
CalcAndShowBar
ShowMe
End If
End Sub
Public Property Let ListText(ByVal new_text As String)
Clear True
If Right$(new_text, 2) <> vbCrLf And new_text <> "" Then
new_text = new_text + vbCrLf
End If
Dim mpos As Long, b$
Do
b$ = GetStrUntilB(mpos, vbCrLf, new_text)
If Left$(b$, 1) <> "_" Then
additemFast b$
Else
b$ = Mid$(b$, 2)
If b$ = vbNullString Then
AddSep
Else
additemFast b$
menuEnabled(itemcount - 1) = False
End If
End If
Loop Until mpos > Len(new_text) Or mpos = 0
Repaint
SELECTEDITEM = 0
CalcAndShowBar
ShowMe
End Property
Public Property Get Text() As String
Attribute Text.VB_UserMemId = 0
Dim i As Long, Pad$
Text = space$(500)
RaiseEvent PureListOn
Dim thiscur, l As Long
thiscur = 1
For i = 0 To listcount - 1
Pad$ = list(i) + vbCrLf
l = Len(Pad)
If Len(Text) < thiscur + l Then Text = Text + space$((thiscur + l) + 100)
Mid$(Text, thiscur, l) = Pad$
thiscur = thiscur + l
Next i
Text = Left$(Text, thiscur - 1)
RaiseEvent PureListOff
End Property
Public Property Get TextAtColumn(ByVal RHS As Long) As String
Dim i As Long, Pad$
If RHS < 1 Then RHS = 1
If RHS > mTabs Then RHS = mTabs
TextAtColumn = space$(500)
RaiseEvent PureListOn
Dim thiscur, l As Long
thiscur = 1
For i = 0 To listcount - 1
Pad$ = listAtColumn(i, RHS) + vbCrLf
l = Len(Pad)
If Len(TextAtColumn) < thiscur + l Then TextAtColumn = TextAtColumn + space$((thiscur + l) + 100)
Mid$(TextAtColumn, thiscur, l) = Pad$
thiscur = thiscur + l
Next i
TextAtColumn = Left$(TextAtColumn, thiscur - 1)
RaiseEvent PureListOff
End Property
Public Sub ScrollToTextEdit(ThatTopItem As Long, Optional this As Long = -2)
On Error GoTo scroend
topitem = ThatTopItem
If topitem < 0 Then topitem = 0
If this > -2 Then
SELECTEDITEM = this
End If
CalcAndShowBar1
Timer1.enabled = True
scroend:
End Sub
Public Sub ScrollTo(ThatTopItem As Long, Optional this As Long = -2)
On Error GoTo scroend
If ThatTopItem + lines >= listcount Then
If ThatTopItem - lines < 0 Then topitem = 0 Else topitem = listcount - lines - 1
Else
topitem = ThatTopItem
End If
If topitem < 0 Then topitem = 0
If this > -2 Then
SELECTEDITEM = this
End If
CalcAndShowBar1
Timer1.enabled = True
scroend:
End Sub
Public Sub ScrollToSilent(ThatTopItem As Long, Optional this As Long = -2)
On Error GoTo scroend
topitem = ThatTopItem
If topitem < 0 Then topitem = 0
If this > -2 Then
SELECTEDITEM = this
End If
If BarVisible Then Redraw ShowBar
Timer1.enabled = True
scroend:
End Sub
Public Sub CalcAndShowBar()
CalcAndShowBar1
ShowMe2
End Sub
Private Sub CalcAndShowBar1()
Dim OldValue As Long, oldmax As Long
OldValue = Value
oldmax = Max
On Error GoTo calcend
state = True
On Error Resume Next
Err.Clear
If Not Spinner Then
If listcount - 1 - lines < 1 Then
Max = 1
Else
Max = listcount - 1 - lines
largechange = lines
End If
If Err.Number > 0 Then
Value = listcount - 1
Max = listcount - 1
End If
Value = topitem
End If
state = False
If listcount < lines + 2 Then
BarVisible = False
Else
Redraw Hidebar
End If
calcend:
End Sub
Public Property Get ListValue() As String
' this was text before
RaiseEvent PureListOn
If SELECTEDITEM <= 0 Then Else ListValue = list(ListIndex)
RaiseEvent PureListOff
End Property
Public Property Get listcount() As Long
Dim thatlistcount As Long
RaiseEvent ExposeListcount(thatlistcount)
If thatlistcount > 0 Then
listcount = thatlistcount
Else
listcount = itemcount
End If
End Property
Public Property Let ShowBar(ByVal RHS As Boolean)
If restrictLines > 0 Then
myt = (UserControl.ScaleHeight - mHeadlineHeightTwips) / restrictLines
mytPixels = CLng(myt / scrTwips)
myt = CLng(mytPixels * scrTwips)
Else
mytPixels = (UserControlTextHeightPixels() + addpixels)
myt = mytPixels * scrTwips
End If
m_showbar = RHS
BarWidth = UserControlTextWidth("W")
state = True
Value = 0
state = False
If listcount >= lines Then
BarVisible = (m_showbar Or StickBar Or AutoHide) Or Hidebar
Else
Redraw (m_showbar Or StickBar Or AutoHide) Or Hidebar
End If
'RepaintScrollBar
End Property
Public Property Get ShowBar() As Boolean
If Hidebar Then
ShowBar = True ' TEMPORARY USE
Else
ShowBar = m_showbar Or StickBar Or AutoHide
End If
End Property
Public Property Let BackColor(ByVal RHS As OLE_COLOR)
m_BackColor = RHS
UserControl.BackColor = RHS
PropertyChanged "BackColor"
End Property
Public Property Get BackColor() As OLE_COLOR
BackColor = m_BackColor 'UserControl.Backcolor
End Property
Public Property Get ForeColor() As OLE_COLOR
ForeColor = m_ForeColor
End Property
Public Property Let ForeColor(ByVal RHS As OLE_COLOR)
m_ForeColor = RHS
UserControl.ForeColor = Abs(RHS)
PropertyChanged "ForeColor"
End Property
Public Property Get CapColor() As OLE_COLOR
CapColor = m_CapColor
End Property
Public Property Let CapColor(ByVal RHS As OLE_COLOR)
m_CapColor = RHS
PropertyChanged "CapColor"
End Property
Public Property Get dcolor() As OLE_COLOR
dcolor = m_dcolor
End Property
Public Property Let dcolor(ByVal RHS As OLE_COLOR)
m_dcolor = RHS
PropertyChanged "dcolor"
End Property
Public Property Get enabled() As Boolean
enabled = myEnabled
End Property
Public Property Let enabled(ByVal RHS As Boolean)
myEnabled = RHS
PropertyChanged "Enabled"
On Error Resume Next
If Not waitforparent Then Exit Property
Extender.TabStop = TabStopSoft And RHS
End Property
Public Property Let TabStop(ByVal RHS As Boolean)
On Error Resume Next
mTabStop = RHS
If Not waitforparent Then Exit Property
Extender.TabStop = RHS
End Property
Public Property Let TabStopSoft(ByVal RHS As Boolean)
mTabStop = RHS
TabStop = RHS
End Property
Public Property Get TabStopSoft() As Boolean
TabStopSoft = mTabStop
End Property
Public Property Get AveCharWith() As Long
GetTextMetrics UserControl.hDC, TM
AveCharWith = TM.tmAveCharWidth
End Property
Public Property Get Font() As Font
Set Font = m_font
End Property
Public Function CloneFont(Font As IFont) As StdFont
Font.Clone CloneFont
End Function
Public Property Set Font(New_Font As Font)
Set m_font = New_Font
Set UserControl.Font = m_font
GetTextMetrics UserControl.hDC, TM
If restrictLines > 0 Then
myt = (UserControl.ScaleHeight - mHeadlineHeightTwips) / restrictLines
mytPixels = myt / scrTwips
myt = mytPixels * scrTwips
Else
mytPixels = CLng((UserControlTextHeightPixels() + addpixels))
myt = CLng(mytPixels * scrTwips)
End If
HeadlineHeight = UserControlTextHeightPixels()
PropertyChanged "Font"
End Property
Public Sub CalcNewFont()
GetTextMetrics UserControl.hDC, TM
If restrictLines > 0 Then
myt = (UserControl.ScaleHeight - mHeadlineHeightTwips) / restrictLines
mytPixels = myt / scrTwips
myt = mytPixels * scrTwips
Else
mytPixels = CLng((UserControlTextHeightPixels() + addpixels))
myt = CLng(mytPixels * scrTwips)
End If
HeadlineHeight = UserControlTextHeightPixels()
If ListIndex >= 0 Then
CalcAndShowBar1
ShowThis ListIndex + 1
Else
ShowMe True
End If
End Sub
Public Property Get FontSize() As Single
FontSize = m_font.Size
End Property
Public Property Let FontSize(New_FontSize As Single)
If New_FontSize < 6 Then
m_font.Size = 6
Else
m_font.Size = New_FontSize
End If
GetTextMetrics UserControl.hDC, TM
If restrictLines > 0 Then
myt = (UserControl.ScaleHeight - mHeadlineHeightTwips) / restrictLines
mytPixels = CLng(myt / scrTwips)
myt = CLng(mytPixels * scrTwips)
Else
mytPixels = (UserControlTextHeightPixels() + addpixels)
myt = mytPixels * scrTwips
End If
End Property
Public Property Get BackStyle() As Integer
BackStyle = m_BackStyle
End Property
Public Property Let BackStyle(ByVal New_BackStyle As Integer)
On Error Resume Next
m_BackStyle = New_BackStyle
If m_BackStyle = 0 Then UserControl.BorderStyle = -(m_BorderStyle <> 0) Else UserControl.BorderStyle = 0
PropertyChanged "BackStyle"
End Property
Private Sub usercontrol_GotFocus1()
Dim YYT As Long
YYT = myt
DrawMode = vbCopyPen
If SELECTEDITEM > 0 Then
If SELECTEDITEM - topitem - 1 <= lines Then
If BackStyle = 1 Then
Line (scrollme + scrTwips, (SELECTEDITEM - topitem) * YYT)-(scrollme + UserControl.Width, (SELECTEDITEM - topitem - 1) * YYT), 0, B
Else
Line (scrollme, (SELECTEDITEM - topitem) * YYT)-(scrollme + UserControl.Width, (SELECTEDITEM - topitem - 1) * YYT), 0, B
End If
End If
End If
DrawMode = vbCopyPen
Timer1.Interval = 40
Timer1.enabled = True
End Sub
Public Sub LargeBar1KeyDown(keycode As Integer, shift As Integer)
Timer1.enabled = False
If ListIndex < 0 Then
Else
PressKey keycode, shift
End If
End Sub
Private Sub BlinkTimer_Timer()
If mBlinkTime = 0 Then BlinkON = False
If BlinkON Then
BlinkTimer.Interval = mBlinkTime
FaceBlink = Not FaceBlink
RaiseEvent BlinkNow(FaceBlink)
ShowPan
Else
BlinkTimer.enabled = False
End If
End Sub
Private Sub Timer1bar_Timer()
processXY lastX, LastY
End Sub
Private Sub timer2bar_Timer()
If m_showbar Or Shape1.Visible Or Spinner Then Redraw
On Error Resume Next
If Me.Parent.Visible = False Then Timer2bar.enabled = False
End Sub
Public Sub GiveSoftFocus()
RaiseEvent CheckGotFocus
havefocus = True