mieki256's diary



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 にしてやれば取得できるようになる。

ActionListのほうが良さそう :

F11キーを押したらフルスクリーン表示と通常表示が切り替わる処理を入れたい。

Lazarus 4.4 で作ったアプリなら、フォームの OnKeyDownイベント発生時に Key = VK_F11 の判定をすれば済んだのだけど、Delphi 12 で同じことをしてみたら、フォーム上のボタンをクリックした後は F11キーが効かなくなった。

この場合は ActionList(TActionList)を使ったほうが簡単で確実かもしれない…。ActionListを使うようにしてみたら、ボタンを押した後もF11キーが効いてくれた。

Delphi での ActionList の使い方は以下。

  1. フォーム上に TActionList を貼り付け。
  2. TActionList をダブルクリック。
  3. ActionList の設定ダイアログが表示されるので、新規で Action を作成。
  4. 作成した Action の、プロパティの ShortCut に使いたいキーを割り当て。
  5. イベントの OnExecute をダブルクリックしてプロシージャを作成して、処理を記述する。

Lazarus でも Delphi と同様に ActionList を使ってみたら、F11キーが効いてくれた。

LazarusでOpenGL :

LazarusでOpenGLが使えるらしい。

_OpenGL Tutorial - Free Pascal wiki

とりあえず、上記ページの最初のサンプルだけでも動かしてみた。

  1. 新規プロジェクト → アプリケーション、で作成。
  2. プロジェクト → プロジェクトインスペクタ。
  3. 追加ボタンをクリックして、「新規の要求」を選ぶ。
  4. lazopenglcontext を選んで追加する。

これで、uses に、OpenGLContext と gl を記述できるようになった。また、サンプルでは、uses に FileUtil も記述されているので一応記述。

サンプルをコピペしてビルドしてみた。フツーに動いた。ウインドウ内にグラデーションがかかった三角形が描画されている。

フルスクリーン表示をしたい。その2 :

以下のような記述でも、フルスクリーン表示と通常表示の切り替えができることを確認できた。

{ フルスクリーン表示と通常表示の切り替え }
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より圧倒的に起動が速い点は助かる…。

#3 [nitijyou] 別のミラークリップを購入してみた

ダイソーリオンドール須賀川店で、別のミラークリップを購入。


先日購入したミラークリップは細過ぎて、バックミラーとしては全然使えなかったので、試しに大き目のミラーを購入してみた。これで使えるかな…。どうかな…。

以上、1 日分です。

過去ログ表示

Prev - 2026/01 - Next
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

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project