記事カテゴリ

ユーザー機能


 2024年4月19日(金) 18:56 JST

ぜんざい作ってみた!

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    2,102
年末年始(12/29-1/16)の間嫁さんは実家に帰ってしまっている。
くろねこはというと、今年はお客さんのお客さんのシステムが入れ替えなので年末年始とも出勤でした。一日と二日は土日なのでお休みだった。一日にとりあえずお正月だからと何かお正月ポイものが食べたいとスーパーに買いに出た。
お雑煮作るのはむずかしそうなので、ぜんざいを作ろうとお餅とあんこを買ってきた。あんこの裏に書いてある説明書を見ながら我流で作った。
意外と簡単でお湯を沸かしてあんこ溶かして、お塩を適量入れしばらく火にかけた。これだけでべースが出来て、後はそこに食べたいだけの焼き餅をつっこむ。途中お塩を入れてから味見をしたんだけど、もうちょっと押しをを入れるとどうなるのかなと思って追加したらまずくなった。さらにあんこを追加して味を直す羽目になってしまった。
たくさん作ったぜんざいも毎日食べると(途中で甘くてやになるときも多々あった)、今日で無くなってしまった。こうなるとちと寂しい。あんこがまだ残ってるから嫁が帰ってきてからまた作って子供と食べるかな。

Symantec社のNorton GoBack ここがダメ

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    9,160

まず Norton GoBack を知らない人のためにどういうものかを説明すると

Windows が起動しないというトラブルや、重要ファイルの上書き、動作不良、ウィルス感染によるデータの消失などで取り返しのつかない状況に陥ったときに、システムを正常だった時点にまで戻したり、消失したファイルを簡単に復元できるデータリカバリーソフトだ。
インストール直後から自動バックアップを開始し、常時 HDD 内のファイルを監視する。トラブルが発生したら、リストを使って任意の時点にまでシステムを簡単に戻すことができる。戻し方も、ディスク全体を一気に戻すやり方と、過去の HDD の内容を参照しながらファイル単位で復帰させる方法が有るらしい。(くろねこはいつも全部戻してました。)PCが起動しないという場合でも、起動ディスクに自動で作成された「GoBack ドライブ」にアクセスしてデータを復旧できるというのがうたい文句だ。(こんな時、くろねこはいつも Ghost でした。)
ふつうのバックアップソフトである Norton Ghost や Symantec System Recovery とはまた違う特徴を持っていて、互いに足りない部分を保管するように作ってある。

新年あけまして、おめでとうございます

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    2,267

新年あけまして、おめでとうございます。

新年と言うことで何か新しい試みをと思い、タイトルを新たにしブログなるぺージを作ってしまいました。
ここには、くろねこが日々思った疑問などを書き連ねていきたいと思います。日々疑問に思うことなのであまりサイトの内容とは無関係な内容が多くなるかと思いますが、何か同意できることや意見などがありましたら反応頂けるとうれしく思います。

[Delphi] フリガナを自動で入力する (for VCL.Net)

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    5,533

WM_IME_COMPOSITION メッセージが発生したときに、ImmGetCompositionString 関数を使ってFEP (IME など) が持つフリガナを取得します。

この例は、フリガナ機能付きコンポーネントの作成例です。
TEdit コンポーネントに KanaOut プロパティを追加しています。 この追加したプロパティに、Edit1(TEdit クラス) を設定すると、入力した文字のフリガナが Edit1.Text に入力されていきます。

unit KanaEdit;

interface

uses
  Windows, Messages, Classes, Graphics, Controls, StdCtrls;

type
  { TKanaEdit }
  TKanaEdit = class(TEdit)
  private
    FKanaOut: TEdit; // KanaOutプロパティ
  protected
    procedure SetKanaOut(AValue:TEdit);
    procedure WndProc(var Msg: TMessage); override;
  published
    // プロパティ
    ...
    property KanaOut: TEdit read FKanaOut write SetKanaOut;
    ...
  end;

procedure Register;

implementation

uses
  IMM;

procedure Register;
begin
  RegisterComponents('Samples', [TKanaEdit]);
end;

{*******************************************************************************
機能: カナ出力プロパティーセット
引数:
戻値:
*******************************************************************************}
procedure TKanaEdit.SetKanaOut(AValue: TEdit);
begin
  if (AValue = nil) or (AValue = Self) then
  begin
    FKanaOut := nil;
  end
  else
  begin
    FKanaOut := AValue;
  end;
end;

{*******************************************************************************
機能: メッセージ処理
引数:
戻値:
*******************************************************************************}
procedure TKanaEdit.WndProc(var Msg: TMessage);
var
  imc: HIMC; // IMEのコンテキストを格納
  sbKana: StringBuilder;
  nSize: Integer;
begin
  if (FKanaOut <> nil) then
  begin
    if (Msg.Msg = WM_IME_ENDCOMPOSITION) then
    begin
      imc := ImmGetContext(Handle);
      case Msg.Msg of
        WM_IME_ENDCOMPOSITION:
        begin
          // 変換結果の「読み」を取得
          nSize := ImmGetCompositionString(imc, GCS_RESULTREADSTR, nil, 0);
          sbKana := StringBuilder.Create;
          sbKana.Length := nSize;
          ImmGetCompositionString(imc, GCS_RESULTREADSTR, sbKana, nSize+1);
          ImmReleaseContext(Handle, imc);
          // 更新後文字列作成
          FKanaOut.Text := FKanaOut.Text + sbKana.ToString;
        end; // WM_IME_ENDCOMPOSITION
      end; // case
    end;  // if
  end;  // if
  inherited;
end;
end.

[Delphi] 入力禁止中に発生したユーザによる入力の消去

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    6,775

ある特定の処理実行中は、フォームやボタンの Enabled プロパティを False に設定し、2度同じ処理を実行されないようにしたりします。 しかし、Enabled が False でも True に変更する前にユーザがマウスクリックまたはEnterキーなどで処理をしていた場合、その操作に関連する処理は行われてしまいます。 今回はそのような問題への対策です。
以下の関数をボタンの Enabled を True にする際になどに実行します。

procedure PurgeMsgQueue(AHandle: HWND);
var
  Msg: TMsg;
begin
  // マウスのメッセージをキューから除去
  while PeekMessage(Msg, AHandle, WM_CLOSE, WM_QUIT, PM_NOREMOVE) do exit;
  while PeekMessage(Msg, AHandle, WM_DESTROY, WM_DESTROY, PM_NOREMOVE) do exit;
  while PeekMessage(Msg, AHandle, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE) do;
  // そのほかのメッセージをキューから除去
  while PeekMessage(Msg, AHandle, WM_CLOSE, WM_QUIT, PM_NOREMOVE) do exit;
  while PeekMessage(Msg, AHandle, WM_DESTROY, WM_DESTROY, PM_NOREMOVE) do exit;
  while PeekMessage(Msg, AHandle, WM_KEYDOWN, WM_KEYDOWN, PM_REMOVE) do;
end;

でも、この方法だと取り除きたいマウスとキーボードのメッセージの数だけ記述しないとダメなので、実用性はいかがなものだろうか?

別案として、別スレッドで処理するかマウスとキーボードの処理を別ウィンドウに処理させてしまう方法がある。


サイトカレンダー

サイトカレンダーをスキップ

2024年 04月
«
»
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

新着情報

記事 新着(24時間)

-

コメント 新着(2日)

-

トラックバック 新着(2日)

-

リンク 新着(2週)

新しいリンクはありません

ファイル (14日)