source: trunk/ab5.0/ablib/src/Classes/ActiveBasic/Windows/UI/MakeControlEventHandler.ab@ 551

Last change on this file since 551 was 551, checked in by イグトランス (egtra), 16 years ago

Buttonの追加。WM_COMMANDから子のClickイベントを発生させる仕組みの追加など。

File size: 2.7 KB
Line 
1/*
2注意:インクルードファイルではありません。
3イベント処理の実装コード生成プログラム。
4*/
5
6Imports System
7Imports System.IO
8Imports System.Text
9Imports ActiveBasic
10Imports ActiveBasic.CType
11
12Function EventNameToMemberVariableName(eventName As String) As String
13 '先頭1字を小文字化
14 Dim t = New StringBuilder(eventName)
15 t[0] = ToLower(t[0])
16 Return t.ToString
17End Function
18
19Sub OutputEventHandlerCode(out As TextWriter, eventName As String, argBase As String, comment As String)
20 Dim eventMember = EventNameToMemberVariableName(eventName)
21 Dim handlerType = argBase & "Handler"
22 Dim argsType = argBase & "Args"
23 out.WriteLine("Public")
24' out.WriteLine(Ex"\t/*!")
25' out.WriteLine(Ex"\t@brief " & eventName & "イベントハンドラを追加する")
26' out.WriteLine(Ex"\t*/")
27 out.WriteLine(Ex"\tSub Add" & eventName & "(h As " & handlerType & ")")
28 out.WriteLine(Ex"\t\tIf IsNothing(" & eventMember & ") Then")
29 out.WriteLine(Ex"\t\t\t" & eventMember & " = h")
30 out.WriteLine(Ex"\t\tElse")
31 out.WriteLine(Ex"\t\t\t" & eventMember & " += h")
32 out.WriteLine(Ex"\t\tEnd If")
33 out.WriteLine(Ex"\tEnd Sub")
34' out.WriteLine(Ex"\t/*!")
35' out.WriteLine(Ex"\t@brief " & eventName & "イベントハンドラを削除する")
36' out.WriteLine(Ex"\t*/")
37 out.WriteLine(Ex"\tSub Remove" & eventName & "(h As " & handlerType & ")")
38 out.WriteLine(Ex"\t\tIf Not IsNothing(" & eventMember & ") Then")
39 out.WriteLine(Ex"\t\t\t" & eventMember & " -= h")
40 out.WriteLine(Ex"\t\tEnd If")
41 out.WriteLine(Ex"\tEnd Sub")
42 out.WriteLine("Protected")
43' out.WriteLine(Ex"\t/*!")
44' out.WriteLine(Ex"\t@brief " & comment)
45' out.WriteLine(Ex"\t*/")
46 out.WriteLine(Ex"\tSub On" & eventName & "(e As " & argsType & ")")
47 out.WriteLine(Ex"\t\tIf Not IsNothing(" & eventMember & ") Then")
48 out.WriteLine(Ex"\t\t\t" & eventMember & "(This, e)")
49 out.WriteLine(Ex"\t\tEnd If")
50 out.WriteLine(Ex"\tEnd Sub")
51 out.WriteLine("Private")
52 out.WriteLine(Ex"\t" & eventMember & " As " & handlerType)
53 out.WriteLine()
54End Sub
55
56'OutputEventHandlerCode("PaintDC", "PaintDCEventHandler",
57' "ウィンドウの描画が必要なときに呼び出されます。")
58
59Sub MakeControlEvent(t As String)
60 Dim event As String, handler As String, comment As String
61 Dim n As DWord, i As DWord
62 /*Using*/ Dim in = New StreamReader(t + "EventList.txt")
63 /*Using*/ Dim out = New StreamWriter(t + "Event.sbp")
64 Do
65 Dim s = in.ReadLine
66 If IsNothing(s) Then
67 Exit Do
68 End If
69 If s[0] = Asc("'") Then Continue
70 Dim a = ActiveBasic.Strings.Detail.Split(s, 9) 'Tab
71 If a.Count >= 3 Then
72 OutputEventHandlerCode(out, a[0], a[1], a[2])
73 End If
74 Loop
75 in.Close() 'End Using
76 out.Close() 'End Using
77End Sub
78
79MakeControlEvent("Control")
80MakeControlEvent("Form")
81MakeControlEvent("Application")
82End
Note: See TracBrowser for help on using the repository browser.