記事カテゴリ

ユーザー機能


 2024年4月23日(火) 18:53 JST

[Delphi] MainFormOnTaskBarとタスクバーボタン

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

Delphi2007 以降からでしょうか?MainFormOnTaskBar と言うプロパティが追加されています。

embarcadero のサイトでは下記のように説明されています。

MainFormOnTaskBar プロパティは、Windows タスクバー ボタンを VCL で扱う方法を制御します。

このプロパティが true の場合、タスクバー ボタンはアプリケーションのメイン フォームを表し、そのキャプションが表示されます。false の場合、タスクバー ボタンは、アプリケーションの(非表示の)メイン ウィンドウを表し、アプリケーションのタイトルが表示されます。
 
Windows Vista Aero 効果を使用するには、MainFormOnTaskBar が true であることが必要です。効果には、ライブ タスクバー サムネイル、動的ウィンドウ、Windows フリップ、Windows フリップ 3D があります。

このプロパティの登場というか、Windows Vista Aero 対応のために Delphi が行った修正によっていろいろとフォームの挙動が変更されました。

[Delphi] HTTPApp.HTMLEncodeの不具合

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

HTTPAppユニットにあるHTMLEncodeが正常なHTML文字列を出力してくれない。
文字列の中に & < > " があればそれぞれ&amp; &lt; &gt; &quot; に変換してくれるはずなのだがどうもうまく変換してくれない。

 

[PowerShell] 外部プログラムの同期実行

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

これからCMDを脱却してPowerShellを勉強していこうかと...

DOSバッチの条件分岐は見にくいですからね。
PowerShellであれば最近のプログラミング言語のようなスタイルで条件分岐が書けるので便利。http://www.atmarkit.co.jp/fwin2k/operation/psh02/psh02_03.html
ほとんどのDOSコマンドはそのまま記載して動くみたい。copy, dir, del などの通常使うコマンドはそのまま動いた。

条件分岐と外部プログラム起動ができれば今やってることは結構書けるかな?ということで外部プログラムの実行方法。

&'C:\Program Files\Internet Explorer\iexplore.exe' 'http://www.blackcat.xyz/'

[PowerShell] Windows7でのNTFSアクセス権の設定方法

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

先日から困っていたこと、気づいたら非常に簡単だったこと。

Windows XP迄使えていたNTFSアクセス権の設定コマンド「cacls」はWindows Vista以降では使用できなくなったようです。代わりに「icacls」というコマンドが用意されているようです。

早速このコマンドを利用しようと試みると...
(下記のコマンドはc:\windows\win.ini にUsersグループがアクセスできるように権限を付与します。)

C:\Users\Jun>icacls c:\windows\win.ini /grant Users:M
c:\windows\win.ini: アクセスが拒否されました。
0 個のファイルが正常に処理されました。1 個のファイルを処理できませんでした

と返されます。管理者なのにアクセスが拒否されるのは何でなのかな?とtechnetを探していると、よく似たWindows 2003 Server sp2での事例が引っかかったので、この問題がWindows7でもまだ発生しているのか?このときにリリースされているヴァージョンよりもWindows7についているバージョンの方が新しいから適用されているのでは?と悩んでいました。

Delphiのコンパイラバージョン情報

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

DELPHIにはコンパイラバージョンが#DEFINEで定義されています。
各VersionのDelphi/C++Builderに対するコンパイラバージョン定義は下記の通り

Delphiバージョン 定義
Delphi1 VER80
Delphi2 VER90
Delphi3 VER100
Delphi4 VER120
Delphi5 VER130
Delphi6 VER140
Kylix VER140
Delphi7 VER150
Delphi8 VER160
Delphi2005 VER170
BDS2006 VER180
TurboDelphi VER180
Delphi2007 VER185(VER180)
Delphi2009 VER200
Delphi2010 VER210
Delphi XE VER220
C++Builderバージョン 定義
C++Builder1 VER93
C++Builder3 VER110
C++Builder4 VER125
C++Builder5 VER130
C++Builder6 VER140
BDS2006 VER180
TurboC++ VER180
C++Builder2007 VER185(VER180)
C++Builder2009 VER200
C++Builder2010 VER210
C++BuilderXE VER220

だから、例えばソース中に

{$IFDEF VER170}
  ShowMessage('Delphi2005です');
{$ENDIF}

と書くことによって、Delphi2005のみメッセージが表示されるようにソースが書けます。
Delphi2007だけは、2006とコンパイラの言語仕様に変更がないためVER180もVER185も定義されています。
Delphiのコンパイラバージョンを調べるプログラムを書いておきます。

program DelphiCompilerVerChk;

uses
  SysUtils, Windows;

{$R *.res}

{-------------------------------
//      文字列を追加する関数
機能:       StringAdd(S, 'メッセージ')
            とすると、改行で区切られてSにメッセージが追加される
            StringAdd(S, 'メッセージ' '/')
            とすると、『/』で区切られてメッセージが追加される
備考:       
履歴:       2009/08/28(金)
              作成
//--▼----------------------▽--}
procedure StringAdd(var OriginalText: String; 
  Const AddText: String; Const Separator: String = #13#10);
var
  i: Integer;
  LenOriginal, LenSeparator, LenAdd: Integer;
begin
  if OriginalText = '' then
  begin
    OriginalText := AddText;
  end else
  begin
    LenOriginal := Length(OriginalText);
    LenSeparator:= Length(Separator);
    LenAdd      := Length(AddText);
    SetLength(OriginalText, LenOriginal + LenSeparator + LenAdd);
    for i := 1 to LenSeparator do
    begin
      OriginalText[LenOriginal + i] := Separator[i];
    end;
    for i := 1 to LenAdd do
    begin
      OriginalText[LenOriginal + LenSeparator + i] := AddText[i];
    end;
  end;
end;
//--△----------------------▲--

var
  MsgStr: String;
begin
  MsgStr := 'Version不明';

{$IFDEF VER80}  MsgStr := 'Delphi1';                    {$ENDIF}

{$IFDEF VER90}  MsgStr := 'Delphi2';                    {$ENDIF}

{$IFDEF VER93}  MsgStr := 'C++Builder1';                {$ENDIF}

{$IFDEF VER100} MsgStr := 'Delphi3';                    {$ENDIF}

{$IFDEF VER110} MsgStr := 'C++Builder3';                {$ENDIF}

{$IFDEF VER120} MsgStr := 'Delphi4';                    {$ENDIF}

{$IFDEF VER125} MsgStr := 'C++Builder4';                {$ENDIF}

{$IFDEF VER130} MsgStr := 'Delphi5';                    {$ENDIF}
{$IFDEF VER130} StringAdd(MsgStr, 'C++Builder5');       {$ENDIF}

{$IFDEF VER140} MsgStr := 'Delphi6';                    {$ENDIF}
{$IFDEF VER140} StringAdd(MsgStr, 'C++Builder6');       {$ENDIF}
{$IFDEF VER140} StringAdd(MsgStr, 'Kylix/2/3');         {$ENDIF}

{$IFDEF VER150} MsgStr := 'Delphi7';                    {$ENDIF}

{$IFDEF VER160} MsgStr := 'Delphi8';                    {$ENDIF}

{$IFDEF VER170} MsgStr := 'Delphi2005';                 {$ENDIF}

{$IFDEF VER180} MsgStr := 'BDS 2006(Delphi/C++)';       {$ENDIF}
{$IFDEF VER180} StringAdd(MsgStr, 'Turbo Delphi/C++');  {$ENDIF}

{$IFDEF VER185} MsgStr := 'Delphi2007';                 {$ENDIF}
{$IFDEF VER185} StringAdd(MsgStr, 'C++Builder2007');    {$ENDIF}

{$IFDEF VER200} MsgStr := 'Delphi2009';                 {$ENDIF}
{$IFDEF VER200} StringAdd(MsgStr, 'C++Builder2009');    {$ENDIF}

{$IFDEF VER210} MsgStr := 'Delphi2010';                 {$ENDIF}
{$IFDEF VER210} StringAdd(MsgStr, 'C++Builder2010');    {$ENDIF}

{$IFDEF VER220} MsgStr := 'Delphi XE';                  {$ENDIF}
{$IFDEF VER220} StringAdd(MsgStr, 'C++Builder XE');     {$ENDIF}

  Windows.MessageBox(0,
    PChar(MsgStr),
    PChar(ExtractFileName(ParamStr(0))), MB_OK);

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日)