Delphi初心者のマキと申します。
環境
Delphi6.0 Professional
データベース Pradox
にて開発しています。
本等を使って勉強していて、テーブルはDataModulに作ると書いてあったので、
そのとおり作っています。
そこで質問です。
dataModulにTTableとTDataBaseを作っています。
DataModuleCreateでテーブルをオープンしています。
テーブルは、IDとNameを作っています。
Form1のコンボボックスに、全Nameを一覧で選択できるようにするには
どうすればいいのですか?
宜しくお願いいたします。
DataModuleを使わない場合で、Nameの取得の仕方はわかりますか?
基本的に、TTable、TDataBaseをDataModuleに移動し、これらのコンポーネントを使用するユニットでusesしておけば同じように動くはずです。
その場合、TTable1で指定したものは、DataModule1.TTable1という具合に、DataModuleの名前を指定する必要があります。
usesに入れるのは、メニューから「ユニットを使用する」で入れることができるようです。
にしのさんいつもありがとうございます。
>DataModuleを使わない場合で、Nameの取得の仕方はわかりますか?
これは、できました。
とりあえず今は、
implementationのusesにUnit2を追加して、
procedure TForm1.FormCreate(Sender: TObject);
var
RecCnt: LongInt;
StrList: string;
begin
with DataModule2.Table1 do
begin
for RecCnt := 0 to RecordCount -1 do
begin
StrList := FieldByname('Name').AsString;
ComboBox1.Items.Add( StrList );
next;
end;
end;
ComboBox1.ItemIndex := 0;
end;
こうしてます。
すると、
プロジェクト Project1.exeが EAccessViolation クラスの例外を作成しました。
'モジュール 'Project1.exe'のアドレス0049984Bでアドレス 0000005C に対応する読み込み違反がおきました。'
プロセスは停止しています。再開するにはステップ実行または実行を選択してください。
というメッセージが出てきます。
これは、コンパイルは通るんですけど、実行すると出ます。
Unit2をinterfaceに入れても出ます。
どうすればいいのでしょうか?
初心者なので、何を言っているか解りますか?
宜しくお願いいたします。
プロジェクトのオプションで、DataModuleは自動作成されるようになっていますか?
編集 削除>プロジェクトのオプションで、DataModuleは自動作成されるようになっていますか?
プロジェクトオプションのフォームタブの自動作成の対象(A)には
Form1
DataModule2
になっています。
解りました。
FormCreateじゃ無くて
FormShowにしたらできました。
これは、FormCreate時には、まだ、作られてないってことですよね?
もしよかったら、そこいらへんを教えてください。
そのへんの動きはあまり詳しくないですが、たぶんそういうことだと思います。
DataModule2
Form1
の順序なら、FormCreateでも問題ないと思います。
プロジェクトファイル(.dpr)を見てみればわかりますが、
作成される順番が決められています。
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TDataModule2, DataModule2);
Application.Run;
新規作成してDataModuleを追加した時の状態です。
先にForm1を作成してからDataModuleを作成します。
なのでCreateの時点ではDataModuleは作成されていません。
順番を入れ替えればCreateイベントからでも出来ますよ。
にしのさん・aikoさんありがとうございました。
無事解決しました。\(^o^)/
今後とも宜しくお願いいたしますm(_ _)m