喫茶XRAYトップページ


[7895] Googleでオンラインヘルプを検索返信 削除
2014/9/6 (土) 08:30:10 Mr.XRAY
Delphi XE7 のリリースを記念して,
とっておきの「技」(*) を紹介します.

[Google 検索エンジンでオンラインヘルプを検索]
http://mrxray.on.coocan.jp/Delphi/Others/A_Delphi_OnlieHelphtm.html#08

(*) 個人の見解です(^^;


[7902] オンラインヘルプ返信 削除
2014/9/7 (日) 18:43:49 Mr.XRAY
▼ Mr.XRAYさん
> Delphi XE7 のリリースを記念して,

かどうかは定かではありませんが,以下を追加しました.

[デベロッパーキャンプ資料・デベロッパー TV・Web セミナー]
http://mrxray.on.coocan.jp/Delphi/Others/A_Delphi_OnlieHelphtm.html#09


[7903] Re:オンラインヘルプ返信 削除
2014/9/7 (日) 20:33:07 Mr.XRAY
> [デベロッパーキャンプ資料・デベロッパー TV・Web セミナー]
> http://mrxray.on.coocan.jp/Delphi/Others/A_Delphi_OnlieHelphtm.html#09


PDF 文書を見るのも,読むのも,ダウンロードするのも「タダ」です.
ビデオを観るのも「タダ」です.会員登録もログインも必要ありません.


[7907] Re2:オンラインヘルプ返信 削除
2014/9/8 (月) 09:40:55 taki
▼ Mr.XRAYさん
> > [デベロッパーキャンプ資料・デベロッパー TV・Web セミナー]
> > http://mrxray.on.coocan.jp/Delphi/Others/A_Delphi_OnlieHelphtm.html#09
>
> PDF 文書を見るのも,読むのも,ダウンロードするのも「タダ」です.
> ビデオを観るのも「タダ」です.会員登録もログインも必要ありません.


「タダ」なのでビデオを観ました。

「マルチデバイスの荒海にこぎ出す新人のエンジニアのためのソフトウェア開発の心得」
出てきた絵が面白かったので「顧客が説明した要件」でググってみました。

「顧客が本当に必要だったもの」を知るにはやっぱエスパーでないと無理なのか!


[7908] Re3:オンラインヘルプ返信 削除
2014/9/8 (月) 15:34:55 Mr.XRAY
▼ takiさん

> 「マルチデバイスの荒海にこぎ出す新人のエンジニアのためのソフトウェア開発の心得」
> 出てきた絵が面白かったので「顧客が説明した要件」でググってみました。
>
> 「顧客が本当に必要だったもの」を知るにはやっぱエスパーでないと無理なのか!


私は,皆さんと立場が違いますが.それでもありますね.
結構苦労するもんです.
開発したアプリを利用する担当者が変わると,仕様も変わるとか.
やっぱりエスパーでないと無理でしょう... 多分,おそらく... きっと...

このビデオ,新人となっていますが,開発者の方にとって参考になると思います.
このような講演をされる方は,時間をかけて準備し,文書を作成しているわけです.
その貴重な資料が読めたり,観たりすることができるのですから,
利用しない手はありません.しかも「タダ」なんですから.

# 現代社会においては「時間」はタダではありません.
# ミヒャエル・エンデの「モモ」の世界じゃないんですから.


[7909] Re4:オンラインヘルプ返信 削除
2014/9/8 (月) 15:47:46 Mr.XRAY
> 利用しない手はありません.しかも「タダ」なんですから.

あと,ちょっとお勧めなのが以下です.
具体的なコーディングに関する内容ですが...

[業務アプリ開発で活かせるDelphiプログラミングテクニック]
PDF
http://edn.embarcadero.com/article/images/43816/c2.pdf
Video1
https://www.youtube.com/watch?v=qPWOsb3tSE8
Video2
https://www.youtube.com/watch?v=zDb-m-Jjh9c

近日中に,この講演の内容の一部を,当サイトの記事に反映というか追加
しようと思っています.と思ってから数が月経ちました (^^;


[7945] Re2:オンラインヘルプ返信 削除
2014/9/14 (日) 09:53:42 千絵
▼ Mr.XRAYさん
> > [デベロッパーキャンプ資料・デベロッパー TV・Web セミナー]
> > http://mrxray.on.coocan.jp/Delphi/Others/A_Delphi_OnlieHelphtm.html#09


「タダ」という言葉に強く魅かれる性格のため、さっそく行って見ました。
そして、なるべく易しそうなところを探し、クリックしてみました。
「楽しい」と「基礎」のキーワードで
「Delphiで学ぶ楽しいプログラミング基礎」を選択。
「うぁ!」(これ喜びの声)

字が大きくて、絵が楽しい。
それだけでも大満足ですが
解説の言葉も易しくて
あまりよろしくない頭脳にも理解できました。

Delphをヘルプすると、「英語になるか、とても難しいか」どちらかで
ちっともやる気が出ませんでしたが、デベロッパーキャンプ資料で
考えが少し変わりました。


[7947] Re3:オンラインヘルプ返信 削除
2014/9/14 (日) 23:36:24 千絵
自分へのコメントで恐縮です。
読み進んでいったところ、迷路に入りこみました。
「理解できた」というのを「理解できなかった」に
訂正させていただきます。
大きい文字とイラストに、「やさしい」と勘違いをしてしまいました。
クラスの生成だったのですが、結局は、エラーエラーで何もできませんでした。
猛烈に反省しております。

[7951] Re4:オンラインヘルプ返信 削除
2014/9/16 (火) 09:24:48 Mr.XRAY
> 「理解できた」というのを「理解できなかった」に
> 訂正させていただきます。
> 大きい文字とイラストに、「やさしい」と勘違いをしてしまいました。


「やさしい」と感じたり,思ったりすることも重要な意味があるらしいです.
現在,これだけ普及しているパソコンと呼ばれているコンピュータが,
普及し始めた頃,中々操作を覚えられない人が多く,
「私でもできた」とか「猿にも分かる」とか「○○でも覚えられる」
というのがはやりました.

心理学者によると,覚えられない人というのは,心理的に,脳に「壁」が
出来ているのだそうです.覚えられる人はその「壁」がないか,薄いのだそうです.
「○○でも分かる」というのは,その心理状態に作用するのだそうです.

これは,コンピュータに限らず,運動やスポーツでもそうなんだそうです.
つい最近話題になった,テニスの錦織という方も,コーチが,
「圭ならできる.圭ならできる」と言い続けたそうです.

オリンピックで金メダルを取れるのは一人だけです.
誰でもが努力すれば金メダルを取れるわけではありません.
しかし,取ろうと思わなければ取れません.
「私なんかダメなんだ」と弱気になったら金メダルは取れません.
「私だって,頑張れば」「都ってやる」と思う気持ちが大切なんだそうです.

あれっ,ちょっと意味が違ってきてしまったようです.スミマセン.

# 「私なんかダメですよ」は,社交辞令では,皆さんもよく言うと思いますけど


[7953] 私は猿以下返信 削除
2014/9/16 (火) 17:51:16 Mr.XRAY
> 「○○でも分かる」というのは,その心理状態に作用するのだそうです.

私自身は,このネーミングはあまり好きではないです.
だって,「猿でもわかる○○」という本を読んで,分からないかったら,
猿以下になっちゃうもん (^^;


[7956] Re:私は猿以下返信 削除
2014/9/16 (火) 20:55:03 猿以下
▼ Mr.XRAYさん
> 猿以下になっちゃうもん (^^;

XE2のヘルプが起動できなくて某掲示板に質問を投げたんですが
結局解決できませんでした。

その後、ここで気になる書き込みタイトルを見つけたんですが
やっと本日読ませていただきました。

ブックマークに登録させていただきます。



[8033] Re2:私は猿以下返信 削除
2014/9/28 (日) 12:07:55 igy
▼ 猿以下さん
> XE2のヘルプが起動できなくて某掲示板に質問を投げたんですが
> 結局解決できませんでした。


snailさんが

RAD Studio のヘルプ名前空間がていぎされていません
http://hpcgi3.nifty.com/e-papy/DelphiBBS/wwwlng.cgi?print+201408/14080014.txt

と質問されていて、

>ms help 2.x runtime file are not installed on this PC

とエラーが出るということで、

Microsoft Document Explorer 2008
Microsoft Document Explorer 2008 日本語 Language Pack

を一度、アンインストールし、
ここの掲示板の
[7837] ドキュメント、
では、ドキュメント生成ツールをいくつか試されているみたいなので、
それらも、アンインストールしたうえで、
ヘルプを再インストールしてみるのは、いかがですか?


と書こうとしましたが、すぐ諦められたみたいので、
その掲示板のほうには、書かなかったことを思い出します。


“ 猿以下”さんとは、関係ないかもしれませんが・・・・



[7944] Re:オンラインヘルプ返信 削除
2014/9/13 (土) 18:52:37 Mr.XRAY
[Delphi のオンラインヘルプ等]
http://mrxray.on.coocan.jp/Delphi/Others/A_Delphi_OnlieHelphtm.html

に,以下のリンクを追加しました.

[Delphi (FireMonkey) によるテクニック&アルゴリズム]
http://ht-deko.minim.ne.jp/techalgof.html

[Team Japan のブログ]
http://blogs.embarcadero.com/teamj


[8014] 検索の例?返信 削除
2014/9/25 (木) 19:09:02 Mr.XRAY
> [Google 検索エンジンでオンラインヘルプを検索]
> http://mrxray.on.coocan.jp/Delphi/Others/A_Delphi_OnlieHelphtm.html#08


例えば,
[TListViewの名前列の空白箇所クリック時選択させない]
http://hpcgi3.nifty.com/e-papy/DelphiBBS/wwwlng.cgi?print+201409/14090009.txt

という問題の場合,
VCL TListView 選択 site:http://docwiki.embarcadero.com/Libraries/XE7/ja/
で検索してみます.
https://www.google.co.jp/search?num=50&site=webhp&q=VCL+TListView+%E9%81%B8%E6%8A%9E+site%3Ahttp%3A%2F%2Fdocwiki.embarcadero.com%2FLibraries%2FXE7%2Fja%2F&oq=VCL+TListView+%E9%81%B8%E6%8A%9E+site%3Ahttp%3A%2F%2Fdocwiki.embarcadero.com%2FLibraries%2FXE7%2Fja%2F&gs_l=serp.12...0.0.2.67.0.0.0.0.0.0.0.0..0.0....0...1c..54.serp..4.0.0._9j-lsA0ShY

そして,ヒットしたページで「選択」を検索してみる.といった具合でしょうか.
Google で検索する際,「空白」という語句は入れていません.
質問の文章における「空白」意味は少し(かなり?)曖昧な表現です.

あたり前ですが,検索したページを読んだだけでは,
問題の解決になるわけではありません.
あくまでも「検索の例」です.

大抵の場合,調べるのはプロパティ,メソッド,イベントのことが多いと思います.
したがって,しつこいようですが,あくまでも「検索の例」です.


[8015] Re:検索の例?返信 削除
2014/9/25 (木) 19:21:46 Mr.XRAY
> という問題の場合,
> VCL TListView 選択 site:http://docwiki.embarcadero.com/Libraries/XE7/ja/


失礼,VCL とは書いてないですね.
FireMonkey でしたら,VCL の代わりに FMX にするといいかも知れません.
あるいは,VCL も FMX もなしとするかですね.


[8016] ランイムテーマ有効時の再描画の問題返信 削除
2014/9/26 (金) 01:26:11 Mr.XRAY
> あたり前ですが,検索したページを読んだだけでは,
> 問題の解決になるわけではありません.
> あくまでも「検索の例」です.


深読みしてしまう方もいるかも知れませが,本当に「検索の例」です.
質問の文章だけでは,私には状況が理解できません.

某掲示板での質問の内容とは直接は関係ありませんが,
参考までに,「テーマをWindow7ベーシック」で思い出したのですが,
TListView に限らず,ランイムテーマを有効にすると,TButton 等でも
再描画の問題が発生することがあります.
そういう時は,コントロールに対して Invalidateとか Refresh を実行するしか
ないでしょうね.
掲示板等のスレッドを読んで,こういうことを思い出せば,知識の再確認が
できます.


[8017] Re:ランイムテーマ有効時の再描画の問題返信 削除
2014/9/26 (金) 13:29:29 Mr.XRAY
> TListView に限らず,ランイムテーマを有効にすると,TButton 等でも
> 再描画の問題が発生することがあります.


例えば,以下のサンプルでも現象が発生することがあります.
Delphi のバージョン,描画内容にも関係するようです.
詳しいことは分かりせん.

[792_エクスプーラの縮小表示機能を使用した画像のサムネイル表示]
http://mrxray.on.coocan.jp/Delphi/plSamples/792_ExplThumbnail.htm

[02_TButton の Enabled := False の時の描画の問題]
http://mrxray.on.coocan.jp/Delphi/plSamples/700_WaitSleep.htm#02

ワード操作フォームEx, エクセル操作フォームEx でも,この再描画の問題に
悩まされました.Word2007, Excel2007 では特に.
Word2010, Excel2010 では改善されています.

Windows 8 では GUI の仕様が変更されているので,もしかしたら再描画の問題は
発生しないのかも知れません.まだ確認はしていません.


[8018] Re:ランイムテーマ有効時の再描画の問題返信 削除
2014/9/26 (金) 13:43:46 Mr.XRAY
> そういう時は,コントロールに対して Invalidateとか Refresh を実行するしか

InvalidateRect, UpdateWindow というのもあります.


[8027] :ランイムテーマとは返信 削除
2014/9/27 (土) 20:52:47 Mr.XRAY
大変失礼しました.
当店のお客様の中には,ランタイムテーマには全く関係ない,
ふる〜い Delphi を使っている方もいらっしゃいます.
そこで...

ランタイムテーマは,Windows XP 以降のビジュアルスタイルに対応した機能です.
ランタイムテーマを有効にすると,下図のようになります.
最初の図が,ランタイムテーマが無効の時,その下が有効な場合です.
Windows 7 U64(SP1) + Delphi XE5 Pro です.

えっ? 何ですか? 嫌味に聞こえる? それは多分気のせいです(笑)


[8028] Re::ランイムテーマとは返信 削除
2014/9/27 (土) 20:54:05 Mr.XRAY
> ランタイムテーマを有効にすると,下図のようになります.
> 最初の図が,ランタイムテーマが無効の時,その下が有効な場合です.
> Windows 7 U64(SP1) + Delphi XE5 Pro です.


Windows 8.1 で実行した場合です.


[8029] ランイムテーマの設定返信 削除
2014/9/27 (土) 20:55:26 Mr.XRAY
Delphi XE5 Pro の場合です.
[プロジェクト] [オプション] ダイアログの [アプリケーション] で設定します.


[8030] :ランイムテーマが有効かを判定返信 削除
2014/9/27 (土) 22:03:31 Mr.XRAY
実行時にランタイムテーマが有効かを判定する方法です.
uses に Themes を追加して,例えば以下のコードで判定できます.

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Themes.ThemeServices.Enabled then begin
    ShowMessage('テーマ有効');
  end else begin
    ShowMessage('テーマ無効');
  end;
end;

stackoverflow に次のようなコードがありました.
これを利用したコードです.
同じく uses に Themes が必要です.

http://stackoverflow.com/questions/2879820/importing-specific-in-my-case-themes-themesservice-themesenabled-function

function ThemesEnabled :Boolean;
const
  ComCtlVersionIE6 = $00060000;
var
  ThemeLib      : THandle;
  IsThemeActive : function: Boolean; stdcall;
  IsAppThemed   : function: Boolean; stdcall;
begin
  Result := GetFileVersion('comctl32.dll') >= ComCtlVersionIE6;
  if not Result then exit;

  ThemeLib := LoadLibrary('uxtheme.dll');
  try
    if ThemeLib > 0 then begin
      IsAppThemed   := GetProcAddress(ThemeLib, 'IsAppThemed');
      IsThemeActive := GetProcAddress(ThemeLib, 'IsThemeActive');
      Result := IsAppThemed and IsThemeActive;
    end else begin
      Result:=False;
    end;
  finally
   FreeLibrary(ThemeLib);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if ThemesEnabled then begin
    ShowMessage('テーマ有効');
  end else begin
    ShowMessage('テーマ無効');
  end;
end;


[8031] テーマのスタイルの変更返信 削除
2014/9/27 (土) 22:23:23 Mr.XRAY
テーマのスタイルは,いろいろ変更できます(Delphi XE2以降)
これらはアプリケーション単位の変更です.
システム全体の変更ではありません.

VCL スタイル (Delphi XE2 以降)
http://ht-deko.minim.ne.jp/tech074.html

コンポーネント類もあります
[888_スキン変更用コンポーネン]
http://mrxray.on.coocan.jp/Delphi/plSamples/888_XPSkinForm.htm


[8034] TListViewで項目が選択されているか返信 削除
2014/9/28 (日) 12:22:15 Mr.XRAY
> 例えば,
> [TListViewの名前列の空白箇所クリック時選択させない]
> http://hpcgi3.nifty.com/e-papy/DelphiBBS/wwwlng.cgi?print+201409/14090009.txt


この質問では,TListView の項目が選択されているかどうかを,どう確認したか,
書いてありませんが,

TListView で項目(Item) が選択されているかどうかは,
TListView.ItemIndex の値で確認できます.
(TListView はコンポーネントのクラス名です.
 フォームに配置した TLietView コンポの名前が ListView1 の場合は,
 ListView1.ItemIndex の値のことです)

ItemIndex の値が -1 の時は,項目は選択されていません.
0 以上の時は選択されています.
TListView.SelCount の値でも確認できます.
また,Selected プロパティの値でも確認できます.

http://docwiki.embarcadero.com/Libraries/XE7/ja/Vcl.Controls.TCustomListControl.ItemIndex
http://docwiki.embarcadero.com/Libraries/XE7/ja/Vcl.ComCtrls.TCustomListView.SelCount
http://docwiki.embarcadero.com/Libraries/XE7/ja/Vcl.ComCtrls.TCustomListView.Selected

参考までに.


[8035] Re:TListViewで項目が選択されているか返信 削除
2014/9/28 (日) 12:48:06 Mr.XRAY
> (TListView はコンポーネントのクラス名です.
>  フォームに配置した TLietView コンポの名前が ListView1 の場合は,
>  ListView1.ItemIndex の値のことです)


何故,ListView1.ItemIndex という書き方をしないかと言うと,
コンポーネントの名前は任意に変更できます.
ListView1, ListView2, あるいは LV 等も使う時があります.
そこで,クラス名を使用して,TListView.ItemIndex としておけば,
TListView というコンポーネントの ItemIndex のことであることが明確になります.

> http://docwiki.embarcadero.com/Libraries/XE7/ja/Vcl.Controls.TCustomListControl.ItemIndex
> http://docwiki.embarcadero.com/Libraries/XE7/ja/Vcl.ComCtrls.TCustomListView.SelCount
> http://docwiki.embarcadero.com/Libraries/XE7/ja/Vcl.ComCtrls.TCustomListView.Selected


オンラインヘルプでは TCustomListView となっています.
この TCustomListView は TListView の継承元のクラスです.
多くのコンポーネント,クラスは,この TCustomXXX と言う名前のクラスから
作成されています.

TCustomXXXX には,公開プロパティ(public や published) はありません.
この TCustomXXXX から,似たような別のコンポーネント,あるいはクラスが
作成されています.そして,必要に応じて public 等のプロパティとしています.

参考
[10-03_コンポーネントを TCustomEdit から作成する意義]
http://mrxray.on.coocan.jp/Delphi/plSamples/160_CreateComponent.htm#10-03


[8038] TListViewの選択項目の番号と再描画問題返信 削除
2014/9/29 (月) 19:10:36 Mr.XRAY
> TListView で項目(Item) が選択されているかどうかは,
> TListView.ItemIndex の値で確認できます.


実際にテストしてみました.
サンプルプログラム集の[790_ファイル一覧・仮想リストビュー]の
[01_ファイル一覧・仮想リストビュー (ファイル名のみ)]を使用しました.
そのサンプルで,

  ListView1.RowSelect := False;

として,次のイベントのコードを追加して実行した結果です.
再描画の問題もテストしています.
最初の図では,ItemIndex の値が 2 となっていて,3 番目の項目が選択されている
ことが分かります.
次の図では -1 となっていますから,どの項目も選択されていないことが分かります.
しかし,再描画が完全でないために,描画が不自然な状態となっています.
動作確認は,Windows 7 U64(SP1) + Delphi XE(UP1) Pro です.


procedure TForm1.ListView1Click(Sender: TObject);
var
  AIndex : Integer;
begin
  //図はこの再描画のコードがない場合でテストしている
  //ListView1.Invalidate;

  AIndex := ListView1.ItemIndex;
  //フォーカス領域の枠線を描画しない場合
  //図ではこのコードがない場合でテストしている
  //このコードを実行すると,再描画が行われるのでListView1.Invalidate;は不要
  //if AIndex < 0 then begin
  //  ListView1.ItemFocused := nil;
  //end;

  Panel1.Caption := '選択項目番号   ' + IntToStr(AIndex);
end;



[8039] というわけで...返信 削除
2014/9/29 (月) 21:53:50 Mr.XRAY
> 実際にテストしてみました.

というわけで,池上 彰さんの話も終わりましたので...
ではなく,ここ最近,Delphi のコミュニティの場での,主に質問内容を
取り上げてみました.

質問の内容に対しての直接の解決策ではありませんが,
こうすると,単に「うまくいきました」「解決しました」だけではなく,
いろいろな面が見えてきます.
コミュニティの場では中々,いや,間違いなくこうはいきません.


INCM/CMT
Cyclamen v3.82