TclGUI


 GUIコントロール
  ■ウィンドウ    ■パネル      ■子ウィンドウ
  ■タブ       ■ボタン      ■相対座標
  ■エディット    ■メモ       ■パスワード
  ■テキスト     ■リスト      ■コンボボックス
  ■ツリー      ■チェックボックス ■ラジオボタン
  ■グループボックス ■ステータス    ■ビットマップ
  ■スクロールバー
 メッセージコマンド
  ■ウィンドウ    ■コントロール
 マウスイベント
  

 


GUIコントロール

ウィンドウ gui Window

gui window

gui Window $WindowName $Title $X $Y $W $H $InitProc
$ExitProc $TabProc $RepaintProc

例gui Window park 公園施設管理 890 5 350.5w 272.5h initpark
 exitpark tabpark

$WindowName
親ウィンドウ名と自分の名前を.で結んだ文字列(例:Park.Settei)。
親名がなく、自分の名前のみの場合はトップウインドウ(上例ではpark)
※TclWin.EXE環境でウインドウを作成する時は、ウインドウ名に「TclWin」を
使用しないで下さい。

$Title
ウィンドウタイトルとして表示される文字(NULL可)

$X $Y
ウィンドウ左上隅の座標(スクリーン座標系・ピクセル) (上例では890 5)

$W $H
ウィンドウ幅(ピクセル)とウィンドウ高さ(ピクセル)を文字幅の倍数
(実数値:上例では350.5w 272.5h)もしくは、ピクセル値(例:200P)で与える。

$InitProc
ウィンドウが作成されるとき一回だけ実行するプロシージャ名(省略可)。
プロシージャはアーギュメントなし
   proc createproc {} {
   ………………
   }

$ExitProc
ウィンドウが閉じられる時必ず実行されるプロシージャ名(省略可)。
プロシージャはアーギュメントなし
   proc exitproc {} {
   ………………
   }

$TabProc
タブが切り替えられた時実行されるプロシージャ名(省略可)。
プロシージャは新しいタブ番号をアーギュメントに受け取る。
   proc tabproc tab {
   ………………
   }

$RepaintProc
ウインドウが再描画されるとき実行されるプロシージャ名(省略可)


パネル gui Panel

タイトルバーがないウインドウを作成します。
Windowとアーギュメントは同じです。
ただしTitleに"norborder"を与えるとウインドウ枠も表示されません。


子ウインドウ gui Child

ポップアップされない子ウインドウを作成します。
Windowとアーギュメントは同じですが、配置位置は親ウインドウ内の座標です。
WindowNameには親ウインドウの名前を付けて正しく親子関係を与えます。
Titleに空文字を与えるとウインドウ枠も表示されません。


タブコントロール gui Tab

gui tab

gui Tab $WindowName $X $Y $W $H $TabTitle1 $TabTitle2……

例gui Tab . 0 0 338 208 施 設 樹 木 その他

$WindowName
タブを作成する親ウィンドウ名。(.のみ与えると直前に作成されたウィンドウ)
自分の名前はない。
上例では施 設・樹 木・その他の3つのタブを作成している。
注"施 設""樹 木"のような文字中のブランクは、全角ブランクであること。

$X $Y
親ウィンドウ座標系での左上隅の座標(ピクセル)
上例では0・0を与え、自動設定

$W $H
幅(ピクセル)・高さ(ピクセル)
上例では338 208

XYWH全てに0を与えると位置及びサイズが自動設定され、親ウィンドウ全体に
タブコントロールが配置される。

$TabTitle
タブタイトルリスト。
定義順にシステム内で番号が振られて管理される(0から)。
その番号はコントロールを配置するときに用いる。


ボタンコントロール gui Button

gui button

gui Button $ControlName $Label $X $Y $cW $cH $ButtonProc

例gui Button0 .b1 実行 287 20 3.2W 1.5h "施設::分類別検索Proc"
  または(相対座標の場合)
  gui Button0 .b1 実行 right()+10 top()-1 3.2W 1.5h "施設::分類別検索Proc"

Button
Buttonのみの場合はウィンドウにレイアウトし、Button2のように番号が付くと
タブコントロール内にレイアウトする。
数字はタブタイトル番号(0から)。

$ControlName
配置するウインドウ名 (省略すると直前に作成されたウィンドウ)と自分の名前(必須)を
.で結んだ文字列。
名前のみ(.なし)は許されない。
上例では.b1。親パネルを省略している。

$Label
ラベル 上例では実行ボタンが作成される

$X $Y
親ウィンドウ座標系での左上隅の座標(ピクセル)。
親がタブの場合はタブ座標系。
座標値は他コントロールからの
相対座標で与えることもできる。

$cW $cH
コントロール幅(ピクセル)とコントロール高さ(ピクセル)を文字幅の倍数
(実数値:上例では3.2w 1.5h)もしくは、ピクセル値(例:100P)で与える。

$ButtonProc
ボタンがクリックされたとき実行するプロシージャ名。
プロシージャには、ボタン名がアーギュメントとして渡されてくる。
   proc buttonproc { name } {
   ………………
   }


相対座標

位置座標(X,Y)は相対座標で与えることができ、この場合、left(),right(),top(),
bottom()マクロで相対座標を与えます。
()の中にコントロール名を与えると、そのコントロールの、それぞれ左,右,上,下の
座標値が得られます。
このとき、()の中に何も与えないと直前に作成されたコントロールを指定したこと
になります。
マクロに続けてピクセル単位のオフセット量を指定します。

例right()
  right(.Button1)
  right(Win.Button1)+2
  right(Win.Button1)-4

文字列にはブランクが含まれてはならないNG例
  right( )
  right (Win.Button1)
  right(Win.Button1) +2
  right(Win.Button1)- 4


エディットコントロール gui Edit

gui edit

gui Edit $ControlName $Text $X $Y $cW $cH $EditProc

例gui Edit0   .E1 "2000" 10 bottom(.Sc1)+35 3w 1h ""
  gui Edit0   .E2 "" right()+5 top() 11w 1.1h "施設::入力監視Proc"

Edit
Editのみの場合はウィンドウにレイアウトしEdit2のように番号が付くと
タブコントロール内にレイアウトする。
数字はタブタイトル番号(0から)

$ControlName
配置するウインドウ名(省略すると直前に作成されたウィンドウ)と自分の名前(必須)を
.で結んだ文字列。
名前のみ(.なし)は許されない。

$Text
初期表示文字列

$X $Y
親ウィンドウ座標系での左上隅の座標(ピクセル)。
親がタブの場合はタブ座標系。
座標値は他コントロールからの
相対座標で与えることもできる。

$cW $cH
コントロール幅(ピクセル)とコントロール高さ(ピクセル)を文字幅の倍数
(実数値:例8.3w 0.9h)もしくは、ピクセル値(例:100P)で与える。

$EditProc
テキストが編集されるたびに実行するプロシージャ名。
プロシージャには、コントロール名,<CR><LF>フラグ,入力文字列がアーギュメント
として渡されてくる。
   proc Editproc { name crtab text } {
   ………………
   }
memocrtab 0:文字入力 1:<CR>入力 2:<TAB>入力


メモコントロール gui Memo

gui Memo $ControlName $Text $X $Y $cW $cH

Memo
Memoのみの場合はウィンドウにレイアウトしMemo2のように番号が付くと
タブコントロール内にレイアウトする。
数字はタブタイトル番号(0から)

$ControlName
配置するウインドウ名(省略すると直前に作成されたウィンドウ)と自分の名前(必須)を
.で結んだ文字列。
名前のみ(.なし)は許されない。

$Text
初期表示文字列

$X $Y
親ウィンドウ座標系での左上隅の座標(ピクセル)。親がタブの場合はタブ座標系。
座標値は他コントロールからの
相対座標で与えることもできる。

$cW $cH
コントロール幅(ピクセル)とコントロール高さ(ピクセル)を文字幅の倍数
(実数値:例8.3w 0.9h)もしくは、ピクセル値(例:100P)で与える。


パスワード gui Passward

gui Password $ControlName $Text $X $Y $cW $cH

パスワードコントロールはタイプ文字がエコーバックされないエディットコントロール。
イベントプロシージャを持たないことに注意して下さい。

Password
Passwordのみの場合はウィンドウにレイアウトしPassword 2のように番号が付くと
タブコントロール内にレイアウトする。
数字はタブタイトル番号(0から)

$ControlName
配置するウインドウ名(省略すると直前に作成されたウィンドウ)と自分の名前(必須)を
.で結んだ文字列。
名前のみ(.なし)は許されない。

$Text
初期表示文字列

$X $Y
親ウィンドウ座標系での左上隅の座標(ピクセル)。
親がタブの場合はタブ座標系。
座標値は他コントロールからの
相対座標で与えることもできる。

$cW $cH
コントロール幅(ピクセル)とコントロール高さ(ピクセル)を文字幅の倍数
(実数値:例8.3w 0.9h)もしくは、ピクセル値(例:100P)で与える。


テキストコントロール gui Text

gui Text $ControlName $Text $x $y $cW $cH $Adjust

例gui Text1 .t1 年度検索 right()+1 top() 5.5w 0.8h

Text
Textのみの場合はウィンドウにレイアウトしText2のように番号が付くと
タブコントロール内にレイアウトする。数字はタブタイトル番号(0から)

$ControlName
配置するウインドウ名(省略すると直前に作成されたウィンドウ)と自分の名前(必須)を
.で結んだ文字列。
名前のみ(.なし)は許されない。

$Text
初期表示文字列

$X $Y
親ウィンドウ座標系での左上隅の座標(ピクセル)。親がタブの場合はタブ座標系。
座標値は他コントロールからの
相対座標で与えることもできる。

$cW $cH
コントロール幅(ピクセル)とコントロール高さ(ピクセル)を文字幅の倍数
(実数値:例8.3w 0.9h)もしくは、ピクセル値(例:100P)で与える。

$Adjust
文字列の表示位置指定。省略可
Center…中心に表示 Left…左詰め表示 Right…右詰め表示


リスト gui List

gui List $ContolName $X $Y $cW $N

例gui List .結果 left() bottom()+10 11.2w 8.5h

リストの項目はgui Addコマンドで与えます。

List
Listのみの場合はウィンドウにレイアウトしList2のように番号が付くと
タブコントロール内にレイアウトする。数字はタブタイトル番号(0から)

$ControlName
配置するウインドウ名(省略すると直前に作成されたウィンドウ)と自分の名前(必須)を
.で結んだ文字列。
名前のみ(.なし)は許されない。

$X $Y
親ウィンドウ座標系での左上隅の座標(ピクセル)。
親がタブの場合はタブ座標系。
座標値は他コントロールからの
相対座標で与えることもできる。

$cW
コントロール幅(ピクセル)を文字幅の倍数(実数値:例8.3w)もしくは、ピクセル値
(例:100P)で与える。

$N
表示させる行数


gui Add

gui combo

gui add $ControlName $item $itemproc

例 gui Combo2    park.c1   left()    bottom()+25   11w   6h
   .............
   foreach item "全施設 園路・広場 修景施設 休養施設 遊技施設 運動施設"  {
     gui  Add  park.c1    $item  "施設::リストセットProc"
   }

$item
リストに追加する項目名称

$itemProc
項目が選択された時実行するプロシージャ。項目ごとに指定できる。
プロシージャには、コントロール名,インデックス番号,項目名がアーギュメントとして
渡されてくる。
インデックス番号は0から開始。
   proc itemproc { name index item } {
   ………………
   }


コンボボックスコントロール gui Combo

gui combo

gui Combo $ContolName $X $Y $cW $N $EditProc

例 gui Combo2    park.c1   left()    bottom()+25   11w   6h
   .............
   foreach item "全施設 園路・広場 修景施設 休養施設 遊技施設 運動施設" {
     gui  Add  park.c1 $item  "施設::リストセットProc"
   }

コンボボックスの項目はgui Addコマンドで与えます。
gui Setコマンドを用いると、存在していれば選択され、存在しない場合は追加されます。

Combo
Comboのみの場合はウィンドウにレイアウトしCombo2のように番号が付くと
タブコントロール内にレイアウトする。
数字はタブタイトル番号(0から)

$ControlName
配置するウインドウ名(省略すると直前に作成されたウィンドウ)と自分の名前(必須)を
.で結んだ文字列。
名前のみ(.なし)は許されない。

$X $Y
親ウィンドウ座標系での左上隅の座標(ピクセル)。
親がタブの場合はタブ座標系。
座標値は他コントロールからの
相対座標で与えることもできる。

$cW
コントロール幅(ピクセル)を文字幅の倍数(実数値:例8.3w)もしくは、ピクセル値
(例:100P)で与える。

$N
表示させる行数

$EditProc
エディットコントロールの機能も持たせたい場合にプロシージャ名を与える。
省略すると選択のみ可能なコンボボックスになる。
テキストが編集されるたびにプロシージャが実行され、
プロシージャには、コントロール名,文字列がアーギュメントとして渡されてくる。
   proc editproc { name text } {
   ………………
   }


ツリーコントロール  gui Tree

gui tree

gui Tree $ContolName $X $Y $W $H

例gui Tree$tab .分類  5 bottom()+5 160w 90h

ツリーの項目はgui Addコマンドで与えます。

Tree
Treeのみの場合はウィンドウにレイアウトしTree2のように番号が付くと
タブコントロール内にレイアウトする。
数字はタブタイトル番号(0から)。

$ControlName
配置するウインドウ名(省略すると直前に作成されたウィンドウ)と自分の名前(必須)を
.で結んだ文字列。
名前のみ(.なし)は許されない。

$X $Y
親ウィンドウ座標系での左上隅の座標(ピクセル)。
親がタブの場合はタブ座標系。
座標値は他コントロールからの
相対座標で与えることもできる。

$cW $cH
コントロール幅(ピクセル)とコントロール高さ(ピクセル)を文字幅の倍数
(実数値:例8.3w 0.9h)もしくは、ピクセル値(例:100P)で与える。

gui Add

gui add $ControlName $item $itemproc

例#ツリー親
  gui add $parent.分類 目標物 "検索::分類検索"
  gui add $parent.分類 管理施設 "検索::分類検索"
  gui add $parent.分類 その他 "検索::分類検索"

  # オブジェクト毎のカテゴリー分類
  foreach item "橋梁名 トンネル名 河川名" {
      gui add $parent.分類 目標物.$item "検索::小分類検索"
  }
  foreach item "照明灯 信号" {
      gui add $parent.分類 管理施設.$item "検索::小分類検索"
  }

$item
リストに追加する項目名称 親子孫を.(ピリオド)で連結して指定

$itemProc
項目が選択された時実行するプロシージャ。
項目ごとに指定できる。
プロシージャには、項目名 項目ハンドルがアーギュメントとして渡されてくる。
   proc treeproc { item hwnd } {
   ………………
   }


チェックボックス gui Check

gui check

gui Check $ConttrolName $Label $Onoff $X $Y $cW $cH $CheckProc

例 gui .file 常にファイリングバーを表示する1 7 160 17h

Check
Checkのみの場合はウィンドウにレイアウトしCheck2のように番号が付くと
タブコントロール内にレイアウトする。
数字はタブタイトル番号(0から)

$ControlName
配置するウインドウ名(省略すると直前に作成されたウィンドウ)と自分の名前(必須)を
.で結んだ文字列。
名前のみ(.なし)は許されない。

$Label
ラベル

$Onoff
初期状態。1がON 0がOFF

$X $Y
親ウィンドウ座標系での左上隅の座標(ピクセル)。親がタブの場合はタブ座標系。
座標値は他コントロールからの
相対座標で与えることもできる。

$cW $cH
コントロール幅(ピクセル)とコントロール高さ(ピクセル)を文字幅の倍数
(実数値:例8.3w 0.9h)もしくは、ピクセル値(例:100P)で与える。

$CheckProc
プロシージャ名。プロシージャにはコントロール名,新状態が渡されてくる。
   proc checkproc { name onoff } {
   ………………
   }
他の関連するチェックボックスのONOFF切り替えは、このプロシージャの中で行う
(自動ではない)。


ラジオボタンコントロール gui Radio

gui radio

gui Radio $ConttrolName $Label $Onoff $X $Y $cW $cH $RadioProc

例gui Radio2 .内容 サービス内容 1 10 25 8w 1h "検索::施設検索Proc"
  gui Radio2 .種別 施設種別 0 left() bottom()+2 8w 1h "検索::施設検索Proc"
  gui Radio2 .名称 施設名称 0 left() bottom()+2 8w 1h "検索::施設検索Proc"

Radio
Checkのみの場合はウィンドウにレイアウトしCheck2のように番号が付くと
タブコントロール内にレイアウトする。
数字はタブタイトル番号(0から)

$ControlName
配置するウインドウ名(省略すると直前に作成されたウィンドウ)と自分の名前(必須)を
.で結んだ文字列。
名前のみ(.なし)は許されない。

$Label
ラベル

$Onoff
初期状態。1がON 0がOFF

$X  $Y
親ウィンドウ座標系での左上隅の座標(ピクセル)。
親がタブの場合はタブ座標系。
座標値は他コントロールからの
相対座標で与えることもできる。

$cW  $cH
コントロール幅(ピクセル)とコントロール高さ(ピクセル)を文字幅の倍数
(実数値:例8.3w 0.9h)もしくは、ピクセル値(例:100P)で与える。

$RadioProc
プロシージャ名。プロシージャには、コントロール名,新状態が渡されてくる。
   proc radioproc { name onoff } {
   ………………
   }
他の関連するラジオボタンのONOFF切り替えは、このプロシージャの中で行う
(自動ではない)。


グループボックスコントロール gui Group

gui group

gui Group $ControlName $Lavel  $Left $Top $Right $Bottom

例gui Group0 .g1 分類別検索 3 5 280 50

Group
Groupのみの場合はウィンドウにレイアウトしGroup2のように番号が付くと
タブコントロール内にレイアウトする。数字はタブタイトル番号(0から)

$ControlName
配置するウインドウ名(省略すると直前に作成されたウィンドウ)と自分の名前(必須)を
.で結んだ文字列。
名前のみ(.なし)は許されない。

$Lavel
グループのラベルとして表示される文字列

$Left $Top $Right $Bottom
ボックスの対角点座標(ピクセル)。
すべて
相対座標表記可。


ステータスコントロール gui Status

gui status メッセージ表示のコントロールです。

gui Status $ControlName $Text $X $Y $cW $cH

例gui Status .Msg "" left() bottom()+5 27.9w 1.0h

Status
Statusのみの場合はウィンドウにレイアウトしStatus2のように番号が付くと
タブコントロール内にレイアウトする。数字はタブタイトル番号(0から)

$ControlName
配置するウインドウ名 (省略すると直前に作成されたウィンドウ)と自分の名前(必須)を
.で結んだ文字列。
名前のみ(.なし)は許されない。
上例では親パネルを省略している。

$Text
初期表示文字

$X $Y
親ウィンドウ座標系での左上隅の座標(ピクセル)。
親がタブの場合はタブ座標系。
座標値は他コントロールからの
相対座標で与えることもできる。

$cW $cH
コントロール幅(ピクセル)とコントロール高さ(ピクセル)を文字幅の倍数
(実数値:上例では3.2w 1.5h)もしくは、ピクセル値(例:100P)で与える。


ビットマップントロール gui Bitmap

gui bmp

gui Bitmap $ControlName $FileName $X $Y $W $H $proc

例gui Bitmap2 .Enter1 $ImgPath/樹木.bmp right()+4 top()-7 32 32 入力::樹木Proc

Bitmap
Bitmapのみの場合はウィンドウにレイアウトしBitmap2のように番号が付くと
タブコントロール内にレイアウトする。数字はタブタイトル番号(0から)

$ControlName
配置するウインドウ名(省略すると直前に作成されたウィンドウ)と自分の名前(必須)を
.で結んだ文字列。
名前のみ(.なし)は許されない。
上例では親パネルを省略している。

$FileName
BMPファイル名

$X $Y
親ウィンドウ座標系での左上隅の座標(ピクセル)。
親がタブの場合はタブ座標系。
座標値は他コントロールからの
相対座標で与えることもできる。

$W $H
ビットマップのサイズ(ピクセル)

$Proc
ビットマップ領域をクリックされたら実行するプロシージャ名。
プロシージャには、コントロール名がアーギュメントとして渡されてくる。
  proc bmpproc { name } {
   ………………
  }


スクロールバー gui Scroll

gui Scroll $ControlName $Orient $Range $Pos $X $Y $cW $cL $proc

Scroll
Scrollのみの場合はウィンドウにレイアウトし、Scroll2のように番号が付くと
タブコントロール内にレイアウトする。
数字はタブタイトル番号(0から)

$ControlName
配置するウインドウ名(省略すると直前に作成されたウィンドウ)と自分の名前(必須)を
.で結んだ文字列。
名前のみ(.なし)は許されない。

$Orient
配置方向。hが水平,vが垂直。

$Range
スクロール範囲。整数値で与える。

$Pos
現在位置。スクロール範囲内の整数値で与える。0がトップ位置。

$X  $Y
親ウィンドウ座標系での左上隅の座標(ピクセル)。
親がタブの場合はタブ座標系。
座標値は他コントロールからの相対座標で与えることもできる。

$cW  $cL
スクロールバーのサイズ(文字幅の倍数)

$Proc
スクロールボックスが移動されたら実行するプロシージャ名。
プロシージャには、コントロール名、新位置がアーギュメントとして渡されてくる。
   proc scrollproc {name pos} {
   ………………
   }


メッセージコマンド

ウィンドウ

ウインドウを作成し表示する
gui  display   $WindowName

ウインドウを閉じる
gui   close    $WindowName

注TclWin.EXE環境でトップウインドウを閉じて終了する時にはgui close TclWin
を実行して下さい。
TclWin.EXEは非表示のルートウインドウをTclWin名で作成しています。
これを閉じないとプロセスが残ったままになります。
なお、TclWinの大文字小文字に注意して下さい。

ウインドウのタイトルを得る
gui   get    $WindowName

ウインドウの表示状態を得る。
 1:表示されている。
 0:表示OFFか、存在しない。
gui   get    $WindowName   show

ウインドウの位置(X,Y)と幅(W),高さ(H)を得る。
 X Y W Hのリストが返される。
gui   get    $WindowName   rect

ウインドウハンドルを得る。
gui   get    $WindowName   hwnd

memoWindowNameには予約された名前があり、GeoConceptのフローティングウインドウを
操作できます。全て小文字です。

 セレクションリストウインドウ selection
 トポロジツール        topology
 バーチャルレイヤ修正ツール  layer
 ツールボックス        tool
 フォーカスウインドウ     active
 ウインドウハンドル(整数)   #hwnd

setコマンド,getコマンドでWindowNameが与えられると、システムはユーザーが作成した
ウインドウを検索します。
それが無ければ上表の予約名で検索します。
さらに見つからなければ、表示されている全てのウインドウのタイトルで検索します
(例えば"エクスプローラ"を与えるとWindowsのExplorerが検索されます)。

下記のプログラム例では「エクスプローラ」ウインドウの位置とサイズを変更しています。
例set hwnd [gui getエクスプローラhwnd]
  gui set #$hwnd rect 0 0 400 400

ウインドウのタイトルを変更する。
gui set $WindowName $Title

ウインドウの表示をOFFする。
gui set $WindowName hide

ウインドウの表示をONする。
gui set $WindowName show

ウインドウの位置とサイズを変更する。
 X値,Y値,幅,高さ $W $Hは省略可
gui set $WindowName rect $X $Y $W $H

ウインドウの終了プロシージャをセットする
gui set $WindowName exitproc $proc

ウインドウのタブ変更プロシージャをセットする
gui set $WindowName tabproc $proc

ウインドウの再描画プロシージャをセットする
gui set $WindowName repaintproc $proc

ウインドウをフォーカスウインドウにする
gui set $WindowName active


デバイスコンテキストを得る
gui dc $WindowName open

デバイスコンテキストを開放する
gui dc $WindowName close

指定された$ColorRef番号でクライアント領域を塗りつぶす
gui dc $WindowName erase $ColorRef

memoデバイスコンテキストはGeoConceptページレイアウト機能でプレビューを
表示する時などに必要です。


コントロール

コントロールの現在値を得る
gui get $ControlName
 コンボボックス,リストの場合は"項目番号 項目名"のリストが返される。
 項目番号は0からはじまる。
 ラジオボタン,チェックボックスの場合は1か0が返される。
 その他はラベルが返される。


コントロール表示状態を得る
gui get $ControlName show
 1が返れば表示されている。
 0が返れば表示OFFか存在しない。

コントロールの位置(X,Y)と幅(W),高さ(H)を得る
gui get $ControlName rect
 X Y W Hのリストが返される。

コントロールのウインドウハンドルを得てコントロールが有効か調べる
gui get $ControlName hwnd
 1が返れば有効 0が返れば無効

コントロールのラベルを変更する
gui set $ControlName $Label
 ラジオボタン,チェックボックスの場合は1か0を与える。
 リスト,コンボボックスの場合は"項目名 プロシージャ名"を与える。
 プロシージャ名は省略可。

例gui set Win.COM1 "項目A" ProcA
 既にその項目があれば選択と同じ動きをし、かつプロシージャ名を変更する。
 なければ項目を追加する。


コントロールの表示OFF
gui set $ControlName hide


コントロールの表示ON
gui set $ControlName show


コントロールの位置とサイズを変更する
gui set $ControlName rect $X $Y $W $H
 WとHは省略可

コントロールの無効化(灰色表示)
gui set $ControlName disable


コントロールの有効化
gui set $ControlName enable


コントロールのイベントプロシージャを$ProcNameに変更する
gui set $ControlName proc $ProcName


コンボボックスとリストボックスの項目リストをクリアする
gui clr $ControlName


コンボボックスとリストボックスに項目および選択時に実行するプロシージャ名を与える
gui add $ControlName $ItemName $ProcName


コンボボックスとリストボックスの項目をインデックスで選択する
gui sel $ControlName $Index
 先頭インデックスは0。項目名で選択するにはsetを用いる。


マウスイベント

マウスイベントをTclプロシージャで処理することができます(XGO環境のみ)。

@新しいマウスモードを作成し、マウスイベントプロシージャを登録します。
  set mode [xgo AddMouseMode $MouseProcName XGOMODEFLAG_WANTALL]

Aマウスモードを変更します
  xgo SetMouseMode $mode

以上によりマウスイベントをTclプロシージャで処理することができます。

そのプロシージャで、1をリターンするとイベントはGeoConceptには送られず、
0をリターンするとGeoConceptにも送られます。
例えばマウスの右ボタンがクリックされたとき、それを処理したあと0をリターンすると
ポップアップメニューが表示されますが、1をリターンするとメニューは表示されません。

マウスイベントプロシージャには7つのアーギュメントが渡されます。

proc MouseProc {windowname  mapid  hwnd  button  updown  x   y} {
}

windowname    ウインドウ名(未使用)
mapid     XGOMAPID(未使用)
hwnd      ウインドウハンドル
button     1:左ボタン    2:中間ボタン 3:右ボタン
updown     0:ボタンオープン 1:クリック  2:ダブルクリック 3:ドラック
x   y      マウスのマップ座標(整数)

ダブルクリックの時は、その前にクリックも通知されてきますので注意してください。

 

(C)FreeSoftNet,Inc.