ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Delphiコミュの■ 質問 トピック

  • mixiチェック
  • このエントリーをはてなブックマークに追加
気軽に質問を投稿できる汎用的なトピックがあるといいのではないかと思ったので作ってみました。

コメント(172)

>泰ちゃん さん

ActiveXを用いたアプリケーションを再配布する場合には、使用しているコンポーネントのOCXを配布先マシンにインストールしなければならない場合が多いです。
delphi2010でrichtextboxをB5用紙に設定して自動的に右端で折り返す方法ありませんか?
procedure TForm1.N5Click(Sender: TObject);
var
i:integer;
con:integer;
DrvName, PrtName, PortName
: array[0..127] of Char;
DeviceMode : THandle;
PDevMode : ^TDevMode;
buf:string;
list1:Tstringlist;
list2:Tstringlist;
begin
list1:=tstringlist.create;
list2:=tstringlist.create;
list1.Clear;
list2.Clear;
with Printer do begin
PrinterIndex := -1;
GetPrinter(DrvName,PrtName,PortName,DeviceMode);
{ ハンドルはロックして使用します }
PDevMode := GlobalLock( DeviceMode );
{ 用紙をB5に変更します }
Canvas.Font.Name:='MS 明朝';
PDevMode^.dmPaperSize := DMPAPER_B5;
GlobalUnlock( DeviceMode );
SetPrinter(DrvName, PrtName, PortName, DeviceMode);
list2.Text:=richtextbox1.Text;
con:=0;
for i:= 0 to List2.Count - 1 do
begin
while Length(list2[i+con])>=53 do
begin
list1[i+con]:=copy(list2[i],53*(i+1),53);
inc(con);
end;
if List2.Count=0 then
begin
end
else
begin
list1[i+con]:=copy(list2[i],53*(i+1),53);
end;
end;
for i := 0 to list1.Count - 1 do
begin
Canvas.TextOut(200,200 + (i * Canvas.TextHeight(list1.Strings[i])),list1[i]);
end;
EndDoc;
list1.Free;
list2.Free;
end;
end;
でエラーが出てしまいますどうすればおいですか?
Delphi7でSMTP-AUTHでのメール送信方法が分かりません。
サンプルを見つけたのですがConnection Closed Gracefullyとエラーがでます。
皆さんお力を貸して頂けないでしょうか。

http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200806/200806_08060051.html
Delphi2007を使用しているのですが
RadioGroupのItemsをクリックしたら
RichEditでの行の挿入エラーと出てしまい
項目を追加できないのですが
同じ症状になった方いらっしゃいますか?
すみませんが、質問させてください


今までWinXP+Delphi7を使っていたのですが、このたびWin7+Delphi Xeに環境を変え、それに伴いDelphi7で使っていたソース等をDelphi Xeで修正出来るようにしたのですが、総合開発環境でデバッグしようとしたところ、exeはブレークポイントで止まるのですが、dllはブレークポイントは無効(●に×が付いた状態)になっておりスルーしてしまいます。
WinXP+Delphi7の時には、dllでもブレークポイントで止まりました。

exeもdllもDelphi7で作り、Xe用に修正した後に同じフォルダに再ビルドしてます。

他バージョンのDelphiを参考にデバッグやリンクの設定を色々と変えたのですが効果がありません

以下関係ありそうな現在の設定です
最適化:True(Falseに変更しても変わらず)
デバッグ情報:True(Falseに変更しても変わらず)
マップファイル:Off(オフ以外の設定にしても変わらず)


どうかご教授お願いいたします。

OS:Windows7 Pro(ビルド7600)
環境:embarcadero Delphi Xe 15.0.3890.34076
↑自己解決しました

どうやらフォルダ名に日本語が入ってるパスがあると駄目だったようで、フォルダ名を英語に変えたらデバッグ出来るようになりました
概要的な質問ですいません。
Delphi XE で、MySQL5.x.xに接続するのには、
どんな方法がベストだと思いますか?

これは、だめだ、という場合も教えてください。

よろしくお願いいたします。
すみません、質問です。

Delphi2007を使用しています。

例 21-1-1 の文字列を
  21-01-01 の文字列に変換したいのですが、どのように行ったらよろしいでしょうか?
ご教授お願いします。
ちなみに 21-10-11の場合だと変換なしです。
やり方は色々あると思いますが、、、
'-'で切り出して、
A.val := StrToInt() -> Format('%.2d',[val])するか、
B.先頭に'00'をくっつけて、末尾2文字を切り出す
あたりでしょうか
以下は後者の方法です

function Test1( str: string ): string;
var
i: integer;
s: string;
l: TStringList;
begin
l := nil;
try
l := TStringList.Create();
l.Delimiter := '-';
l.DelimitedText := str;

for i:=0 to l.Count-1 do begin
s := '00' + l.Strings[i];
l.Strings[i] := MidStr( s, Length(s)-2+1, Length(s) );
end;

Result := l.DelimitedText;

finally
l.Free();
end;
end;
>sanahi様
的確な回答、ありがとうございます乙女座

もう一つ、下記のようなものがありますが、これも同じように出来ますでしょうか?
カンマ、スペース、全角スペースで区切って複数表示してあるときは、
それぞれに対し、カンマで区切って表示。

例)21-5-1 21-05-09 21-5-?  の場合
  21-05-01,21-05-09,21-05-? で表示

また数字、○付数字、ハイフン、カンマ、スペース、全角スペース以外がある場合は、変換せずにそのままにする。

例)21.6.6mi
21-12-p9
21-6-? 鈴木 
> カンマ、スペース、全角スペースで区切って複数表示してあるときは、
> それぞれに対し、カンマで区切って表示。

スペース、全角スペースをカンマに置換してから、148の処理を通せばいけるかもしれません


> 数字、○付数字、ハイフン、カンマ、スペース、全角スペース以外がある場合は、変換せずにそのままにする

そのような条件で分岐をすれば良いのではないでしょうか?
また、
○付数字の範囲は文字コードが連続していると思うので、難しくないと思います。
>sanahi様
ありがとうございました乙女座
無事解決できました。
初めて利用させて頂きます。
宜しくお願い致します。
色々自分でも調べてみたのですが、わからなかったので、こちらに書き込みさせて頂きました。

現在、Delphi5→Delphi2007へのマイグレーションを実施しております。
Delphi5では、Crystal Design(レポートツール)を利用していたのですが、
Delphi2007では、Crystal Designはあまり推奨させていないようなので、
これを機に別のレポートツール(例えば、Quick ReportやRave Reports)に切り替えようかと考えております。

このような経験をお持ちの方いらっしゃいますでしょうか?
いらっしゃいましたら、注意点などをお聞かせ願いませんでしょうか?

何卒宜しくお願い致します。
初めて利用させていただきます。
DelphiXEを利用しております。
MS ExchangeServerを利用して
プログラムから添付ファイル付きのメールを
送りたいのですが、どのコンポーネントを
利用してどう送ったらよいのか
ご経験のある方ご教授いただけないでしょうか
DelphiXEは使ったことないけど、その目的ならIndyを使うのではないかな。
IdSMTPで調べてみてください。
ちーげるさんありがとうございます。
IdSMTPで調べてみます。
解決しましたらまたご報告させて頂きます。
助けてください。。。。

コンポーネントを作成してくれと頼まれてしまいました。
初心者なのでコンポーネントを作成したことがほとんどありません。

PanelにListViewを貼り付けてListViewにPopUpMenuを付けたいのですが
ListViewで右クリックしてもメニューがでてきません。


これをお読みになった方、お助けください。。。
>> 157

こんなことかしら

procedure TForm3.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
posx, posy: integer;
begin
if Button = mbRight then begin
posx := Self.Left + ListView1.Left + X;
posy := Self.Top + ListView1.Top + Y;
case ListView1.ItemIndex of
0: PopUpMenu1.Popup(posx, posy);
1: PopUpMenu2.Popup(posx, posy);
// 必要なだけ追加
end;
end;
end;
一応ソースを載せます。すいません。
初心者なので文法などおかしいかもしれませんが
よろしくお願い致します。

unit uCPanel;

interface

uses
SysUtils, Classes, Controls, ExtCtrls, StdCtrls, ComCtrls, Graphics, Menus, Windows, types, messages;

type
TCPanel = class(TPanel)

private
{ Private 宣言 }
protected
{ Protected 宣言 }
public
{ Public 宣言 }
LV1 : TListView;
Pop1 : TPopupmenu;
iM:TMenuItem;
procedure MouseDown(Sender: TObject;Button:TMouseButton; Shift: TShiftState;X:Integer;Y:Integer);
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
{ Published 宣言 }
end;

procedure Register;

implementation

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

Constructor TCPanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
LV1:=TListView.Create(Self);
Pop1:=TPopUpMenu.Create(Self);
im := TMenuItem.Create(Self);

SetBounds(Left,Top,250,250);
LV1.Align:=alClient;
LV1.ViewStyle:=vsReport;
LV1.Font.Color:=clBlack;

LV1.Font.Size:=10;
LV1.Columns.Add.Caption:='日付';
LV1.Columns[0].Width := 250;
LV1.Columns[0].Alignment:=taRightJustify;

 ここでポップアップの項目を増やす。
{IM.Caption:='aaa';  //ここを足すとポインターエラー
Pop1.Items.Insert(0,IM); }


LV1.Parent:=Self;
LV1.OnMouseDown:=MouseDown;
LV1.PopupMenu:=Pop1;
end;

Destructor TCPanel.Destroy;
begin
LV1.Free;
Pop1.Free;
IM.Free;
inherited;
end;

procedure TCPanel.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
if Button=mbRight then
begin
LV1.PopupMenu.Popup(X,Y);
end;
end;
>> 159 HI-YO- さん

MouseDown プロシージャが 親クラス TComponent のMouseDown と名称がバッティングしてうまく動かないみたいです。

名称を異なったもの myMouseDown にしたら動きました。
テストした呼び出し側の初期化処理です。

procedure TForm1.FormCreate(Sender: TObject);
var
m: TMenuItem;
begin
CPanel1.LV1.Items.Add;
CPanel1.LV1.Items[Cpanel1.LV1.Items.Count - 1].Caption := 'なんたら';
m := TMenuItem.Create(CPanel1);
m.Caption := 'ポップアップ';
CPanel1.Pop1.Items.Add(m);
end;
>> 160 で2つ勘違いがありました。

◆1つ目は誤記
 誤:TComponent
 正:TControl

 同名なのでwarning出ます。
 しかしこれは、更に子クラス継承する場合に、
 親クラスのMouseDownが使えなくなってしまうということで、
 この例が動くか動かないかの動作には無関係と思います。

◆2つ目の勘違いは、動かない確認をしていませんでした。

 当方、オリジナルのコードをD7とD2010で試しましたが、
 PopupMenuは動作するとの判断です。

というところで、質問の意味が分からなくなりました。
>> 157 ですが、親クラスにない機能を派生クラスで実装するというis-aの関係ならコンポーネント作成が妥当ですが、幾つかの既存コンポーネントを has-aの関係で組み合わせそれを使いまわしたいというのが目的なら、Frameを使うことを検討されるといいです。
>> きのしたさん

返答ありがとうございます。
参考にさせていただきました。

以下のようにして、対応致しました。


unit uCPanel;

interface

uses
SysUtils, Classes, Controls, ExtCtrls, StdCtrls, ComCtrls, Graphics, Menus, Windows, types, messages;

type
TCPanel = class(TPanel)

private
{ Private 宣言 }
protected
{ Protected 宣言 }
public
{ Public 宣言 }
LV1 : TListView;
Pop1 : TPopupmenu;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
{ Published 宣言 }
end;

procedure Register;

implementation

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

Constructor TCPanel.Create(AOwner: TComponent);
var
iM:TMenuItem;
i:Integer;
S:String;
begin
inherited Create(AOwner);
LV1:=TListView.Create(Self);
Pop1:=TPopUpMenu.Create(Self);


SetBounds(Left,Top,250,250);
LV1.Align:=alClient;
LV1.ViewStyle:=vsReport;
LV1.Font.Color:=clBlack;

LV1.Font.Size:=10;
LV1.Columns.Add.Caption:='日付';
LV1.Columns[0].Width := 250;
LV1.Columns[0].Alignment:=taRightJustify;

LV1.Parent:=Self;

for I := 0 to 1 do
begin
im := TMenuItem.Create(Self);
case i of
0:S:='行挿入';
1:S:='行削除';
end;
IM.Caption:=S;
Pop1.Items.Add(IM);
end;

LV1.PopupMenu:=Pop1;
end;

Destructor TCPanel.Destroy;
begin
LV1.Free;
Pop1.Free;
inherited;
end;

これで、とりあえずは右クリックでPopupMenuが表示されるので
OKです!
本当に助かりました!!!
ありがとうございます!!

>> 164 HI-YO- さん

ポップアップのメニュー項目が、挿入・削除の2つだけと決まっているのなら、
2個のTMenuItem用意しましょう。
そして、Application起動時にCreate, 終了時に Freeです。

この点 160で きのした は手抜きしましたが、こんなところは見習わないでくださいね。
---
あと、余力があったらFrameお試しください。こういうアプリならずっと楽ちんですよ。
質問させてください。
paradox db ではSQLでcase文は使えないのでしょうか?
case文に代わる別のSQLを使うとしたら、どうすればよいのでしょうか?
今のところ、条件を変えて union all にしています。
>> 166 chan さん

CASEは、以下のHELPファイル内「サポートされない言語要素」に明記されてますので使えませんね。
C:\Program Files\Common Files\Borland Shared\BDE\LOCALSQL.HLP

何が問題なのか不明ですが、Delphiのコードで書いたらダメなの?
>きのしたさん
回答ありがとうございます。
やはり使えないのですね。
コードでいいのですが、SQLで書けたら楽だな、と思ったのです。。
ありがとうございました。
RAD STUDIO XE3のマニュアルにツール > オプション... > 環境オプション > VCL Designerの中に[埋め込みデザイナ]があるのですが、実際 RAD STUDIO XE3には、[埋め込みデザイナ]の項目がありません。
RAD STUDIO XE3には、[埋め込みデザイナ]は無いのでしょうか?


http://docwiki.embarcadero.com/RADStudio/XE3/ja/VCL_%E3%83%87%E3%82%B6%E3%82%A4%E3%83%8A

ログインすると、残り143件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

Delphi 更新情報

Delphiのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング