2026/01/23(金) [n年前の日記]
#1 [lazarus][delphi] Lazarusの勉強中。その3
Windows11 x64 25H2上で Lazarus 4.4 の勉強中。
◎ VK_xxx を使いたい :
フォームの OnKeyDownイベント等で、キーの判定をしたい。VK_xxx という指定をするらしいけど…。VK_F11 とか VK_ESCAPE とかそんな感じ。
uses に LCLType を追加すれば使えるようになる。
_LCL Key Handling - Lazarus wiki
_virtual keyboard strokes/de - Free Pascal wiki
ただ、フォームの上にボタン等を置いてしまうと、フォーム側の OnKeyDownイベントでキーの押し下げを取得できなくなる…。プロパティの KeyPreview を True にしてやれば取得できるようになる。
uses に LCLType を追加すれば使えるようになる。
_LCL Key Handling - Lazarus wiki
_virtual keyboard strokes/de - Free Pascal wiki
ただ、フォームの上にボタン等を置いてしまうと、フォーム側の OnKeyDownイベントでキーの押し下げを取得できなくなる…。プロパティの KeyPreview を True にしてやれば取得できるようになる。
◎ ActionListのほうが良さそう :
F11キーを押したらフルスクリーン表示と通常表示が切り替わる処理を入れたい。
Lazarus 4.4 で作ったアプリなら、フォームの OnKeyDownイベント発生時に Key = VK_F11 の判定をすれば済んだのだけど、Delphi 12 で同じことをしてみたら、フォーム上のボタンをクリックした後は F11キーが効かなくなった。
この場合は ActionList(TActionList)を使ったほうが簡単で確実かもしれない…。ActionListを使うようにしてみたら、ボタンを押した後もF11キーが効いてくれた。
Delphi での ActionList の使い方は以下。
Lazarus でも Delphi と同様に ActionList を使ってみたら、F11キーが効いてくれた。
Lazarus 4.4 で作ったアプリなら、フォームの OnKeyDownイベント発生時に Key = VK_F11 の判定をすれば済んだのだけど、Delphi 12 で同じことをしてみたら、フォーム上のボタンをクリックした後は F11キーが効かなくなった。
この場合は ActionList(TActionList)を使ったほうが簡単で確実かもしれない…。ActionListを使うようにしてみたら、ボタンを押した後もF11キーが効いてくれた。
Delphi での ActionList の使い方は以下。
- フォーム上に TActionList を貼り付け。
- TActionList をダブルクリック。
- ActionList の設定ダイアログが表示されるので、新規で Action を作成。
- 作成した Action の、プロパティの ShortCut に使いたいキーを割り当て。
- イベントの OnExecute をダブルクリックしてプロシージャを作成して、処理を記述する。
Lazarus でも Delphi と同様に ActionList を使ってみたら、F11キーが効いてくれた。
◎ LazarusでOpenGL :
LazarusでOpenGLが使えるらしい。
_OpenGL Tutorial - Free Pascal wiki
とりあえず、上記ページの最初のサンプルだけでも動かしてみた。
これで、uses に、OpenGLContext と gl を記述できるようになった。また、サンプルでは、uses に FileUtil も記述されているので一応記述。
サンプルをコピペしてビルドしてみた。フツーに動いた。ウインドウ内にグラデーションがかかった三角形が描画されている。
_OpenGL Tutorial - Free Pascal wiki
とりあえず、上記ページの最初のサンプルだけでも動かしてみた。
- 新規プロジェクト → アプリケーション、で作成。
- プロジェクト → プロジェクトインスペクタ。
- 追加ボタンをクリックして、「新規の要求」を選ぶ。
- lazopenglcontext を選んで追加する。
これで、uses に、OpenGLContext と gl を記述できるようになった。また、サンプルでは、uses に FileUtil も記述されているので一応記述。
サンプルをコピペしてビルドしてみた。フツーに動いた。ウインドウ内にグラデーションがかかった三角形が描画されている。
◎ フルスクリーン表示をしたい。その2 :
以下のような記述でも、フルスクリーン表示と通常表示の切り替えができることを確認できた。
以下のページで色々な方法が紹介されてる。今回試したのは一番最初に紹介されてるやり方。
_Application full screen mode - Free Pascal wiki
{ フルスクリーン表示と通常表示の切り替え }
procedure TForm1.SwitchFullscreen;
begin
if BorderStyle <> bsNone then
begin
// フルスクリーン表示にする
FOrigBounds := BoundsRect;
BorderStyle := bsNone;
WindowState := wsFullScreen;
FormStyle := fsStayOnTop;
end
else
begin
// 通常表示にする
BorderStyle := bsSizeable;
WindowState := wsNormal;
BoundsRect := FOrigBounds;
end;
if BorderStyle = bsNone then
ButtonChgFullScr.Caption := 'Normal'
else
ButtonChgFullScr.Caption := 'Fullscreen';
end;
以下のページで色々な方法が紹介されてる。今回試したのは一番最初に紹介されてるやり方。
_Application full screen mode - Free Pascal wiki
- BorderStyle に bsNone を指定しないと、タスクバーまで隠した状態のフルスクリーン表示にならない。
- Delphi は WindowState に TWindowState.wsMaximized を指定するけれど、Lazarus の場合は wsFullScreen を指定できる。
[ ツッコむ ]
#2 [cg_tools] LazPaintを試用
Windows11 x64 25H2上で LazPaint 7.3 Portable を試用してみた。Lazarus で実装された画像編集ソフト。
ポータブル版の LazPaintPortable_7.3.paf.exe を入手。実行すると任意のフォルダに解凍される。今回は, D:\Prog\LazPaintPortable\ にインストールしておいた。
起動が速い。3〜4秒で起動してくれる。レイヤー機能もついているし、ベクター図形も基本的な形状ならいくつか扱える。とりあえず、GIMPより圧倒的に起動が速い点は助かる…。
ポータブル版の LazPaintPortable_7.3.paf.exe を入手。実行すると任意のフォルダに解凍される。今回は, D:\Prog\LazPaintPortable\ にインストールしておいた。
起動が速い。3〜4秒で起動してくれる。レイヤー機能もついているし、ベクター図形も基本的な形状ならいくつか扱える。とりあえず、GIMPより圧倒的に起動が速い点は助かる…。
[ ツッコむ ]
#3 [nitijyou] 別のミラークリップを購入してみた
ダイソーリオンドール須賀川店で、別のミラークリップを購入。
先日購入したミラークリップは細過ぎて、バックミラーとしては全然使えなかったので、試しに大き目のミラーを購入してみた。これで使えるかな…。どうかな…。
- WIDE ミラークリップ。鏡-コンパクトミラー No.85。サイズ 6.7 x 2.5 x 5.1 cm。本体: ABS樹脂、鏡: アクリル樹脂、バネ: ステンレス鋼線、ピン: 鉄。大創産業株式会社。MADE IN CHINA。
先日購入したミラークリップは細過ぎて、バックミラーとしては全然使えなかったので、試しに大き目のミラーを購入してみた。これで使えるかな…。どうかな…。
[ ツッコむ ]
以上、1 日分です。