記事カテゴリ

ユーザー機能


 2024年3月29日(金) 15:37 JST

[Delphi] タブ順に処理をする

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

めんどくさがりなくろねこはシステムの必須入力チェックとフル桁入力チェックは業務入力チェックの前に出来ないかと考えた。
チェックの順番は、当然にタブ順がふさわしい。

タブ順を自分で管理するのはめんどくさい。エンターキーで[Delphi] Enterキーで次のフィールドに移動する の様な処理が出来るんだからきっと何か良い方法がある!
と調べた結果がGetTabOrderListだった。これを使うと単純なチェックはカスタマイズしたコントロールに持たせたチェックで終わらせることが出来そうだ!しかし、この関数いつからあるんだろう?

※TBC~はくろねこ製のオリジナルコンポーネントのメソッドで、CheckRequiredとCheckFillCharはそれぞれ必須入力チェック、フル桁入力チェックである。

procedure TForm1.CheckInputData(Sender: TObject);
var
  i: integer;
  CtrlList: TList;
  ctrl: TWinControl;
begin
  CtrlList := TList.Create;
  try
    GetTabOrderList(CtrlList);
    for i := 0 to CtrlList.Count - 1 do
    begin
      ctrl := CtrlList[i];
      if (ctrl is TBCCustomEdit) then // エディット
      begin
        if not TBCCustomEdit(ctrl).CheckRequired(true) then exit;
        if not TBCCustomEdit(ctrl).CheckFillChar(true) then exit;
      end;
      if (ctrl is TBCCustomComboBox) then // コンボボックス
      begin
        if not TBCCustomComboBox(ctrl).CheckRequired(true) then exit;
      end;
    end;
  finally
    CtrlList.Free;
  end;
end;

[Delphi] ショートカット作成&情報取得

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

客先でショートカットの内容を判断して書き換える必要に迫られまして・・・
同じようなアプリを置き換えるときに探してショートカットも置き換えてねと…
よく考えたらExcelからOpenOfficeに変えてもExcelにドキュメントを引数で渡すようなショートカットでなく、素直にドキュメントへのショートカットを作っておけば対応できるアプリが普通に対応してくれるんですけどね。

と愚痴っても仕方がないので、まずは一般的なショートカットの作成方法

uses に ActiveX, ComObj, ShlObj を追加する必要があるので忘れず追加!

/// ショートカットの作成
/// ショートカットのファイル名
/// コマンドライン文字列(ファイル名)
/// コマンドライン文字列(引数)
/// 作業場所文字列(引数)
/// 説明文字列
function CreateShortCut(const ShortcutPath: String;
                        const ExecFilePath: String;
                        const Params: String;
                        const WorkingDir: String = '';
                        const Description: String = ''): Boolean;
var
  ShellLink: IShellLink;
  PersistFile: IPersistFile;
{$IFDEF Unicode}
  FileName: String;
{$ELSE}
  FileName: WideString;
{$ENDIF}
begin
  // Create shell link object
  // Get IShellLink/IPersistent inferface
  ShellLink := CreateComObject(CLSID_ShellLink) as IShellLink;
  PersistFile := ShellLink as IPersistFile;
  // Set path to shell link 
  ShellLink.SetPath(PChar(ExecFilePath));

  // Set arguments to shell link
  ShellLink.SetArguments(PChar(Params));

  // Set description string
  ShellLink.SetDescription(PChar(Description));

  // Set working directory
  ShellLink.SetWorkingDirectory(PChar(WorkingDir));

  // Set location (path and index) of the icon
  ShellLink.SetIconLocation(PChar(ExecFilePath), 0);

  // Save to file
  FileName := ShortcutPath;
{$IFDEF Unicode}  
  Result := Succeeded(PersistFile.Save(PChar(FileName), True));
{$ELSE}
  Result := Succeeded(PersistFile.Save(PWChar(FileName), True));
{$ENDIF}
end;

DBGridのカラムをクリックでソート

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

先日、お客様にExcelのように任意の順番でソートできないの?って聞かれました。
なので、「DBGridのカラムをクリックした時にソートの順序を指定するようにプログラムすれば出来るので、その方向で進めますね~。」って話をしていたら、それって毎回データベースを読みに行くの?Delphiってキャッシュできるんでしょ?と言われてキャッシュしてても操作できないよな~と思いつつ…。今思い出す限り出来ないですね~><;また調べておきます~。って返答しちゃいました。

TQueryでは出来ないのですが、TTableやMIDASのTClientDataSetを利用すると出来ちゃうんですね。

※MIDASを利用して多層アプリケーションを構築するとMIDASライセンスが別途必要ですが、クライアントにTClientDataSetを配置する2層アプリケーションでは不要でした。(2010やXEではMIDASライセンスって要らないらしいですね。)

パスワードが指定できるRunAs

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

RunAsコマンドってパスワードがコマンドラインに指定できないんですよね。パスワードを省略したければ/savecredを使って一回パスワードを保存しておきなさいって言うことらしい。

WSHを使ってパスワードを与えるなんてことも出来るのだけれど、結構使いにくいしインタプリタでテキストファイルを読みながら実行されるのでパスワードがだだ漏れなのである。
まあ、個人レベルではパスワードだだ漏れでもあまり気にはならないのでしょうが…

と言うことで、またまたC#の勉強がてら作ってみました。

[2019/11/26 追記]
Sysinternals には便利なユーティリティが公開されています。
暗号化が不要であれば、ShellRunasPsExec が便利に使えると思います。

[Delphi] OSのバージョン取得

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

昔から思っていたこと。

気づくまでは、GetVersionEx APIを使うのが普通だと思っていた。まあ、それが普通なんでしょうが…
Delphiでは各バージョンに共通なもっと楽に取得できる方法があるのである。
まあ、Delphiが自身のためにGetVersionExを発行していてその結果をもらってくると言う感じなのだが


サイトカレンダー

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

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

新着情報

記事 新着(24時間)

-

コメント 新着(2日)

-

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

-

リンク 新着(2週)

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

ファイル (14日)