喫茶XRAYトップページ


[1169] plTackPrevのDisplayメソッドについて返信 削除
2007/3/20 (火) 19:34:29 yumapa
Mr.XRAYさん
いつもお世話になっておりますyumapaです。

先日、plTackPrintによる封筒印刷からplTackPrevによるものへ
変更修正しました時には、何かとアドバイス頂きありがとう
ございました。
どうやらチェックし忘れていましたが、もう一箇所うまく動作しない
箇所がありました。

概要は、
 1.plTackPrevはForm1に配置。
 2.データの描画コードは全てBeforePageDrawに記載。
 3.プレビューフォーム上にCheckBox配置。
 4.CheckBoxをチェックすると、「二折厳禁」と追加で描画させたい。
  その部分のコーディングは
   procedure TplPrev_FUTO.CheckBox1Click(Sender: TObject);
   begin
     Form1.plTackPrev1.Display(Form1.plTackPrev1.PageNumber);
      end;

plTackPrint使用時には問題なく動作していたのですが、plTackPrevに
変更し動作しなくなったようです。
サンプルプログラムの「プレビュー画面で開始ラベルを指定」では
問題なく動作しています。
調べてみましたら、
Form1.plTackPrev1.Display(Form1.plTackPrev1.PageNumber)  は、
Falseを返しているようです。
浅い知識ながら、プレビューフォームから、別のフォームに配置した
plTackPrevを再描画することが問題となっているのかと思うのですが...
アドバイスをお願い致します。


[1170] Re:plTackPrevのDisplayメソッドについて返信 削除
2007/3/20 (火) 23:25:50 Mr.XRAY
▼ yumapaさん

どうも。

>    procedure TplPrev_FUTO.CheckBox1Click(Sender: TObject);
>    begin
>      Form1.plTackPrev1.Display(Form1.plTackPrev1.PageNumber);
>       end;


これ、やっぱりDisplayメソッドのバグ臭いですね。
う〜ん、早く修正しないといけませんね。
ゴメンなさい。考えてみます。

私もこれと同様、CheckBoxによる再描画を多用していまが、動作しているんで
すよね。一体、皆さんとどう違うんでしょう? わからない(って言ってはいけま
せんけど)。


[1171] Re2:plTackPrevのDisplayメソッドについて返信 削除
2007/3/20 (火) 23:43:36 yumapa
▼ Mr.XRAYさん

お世話になりますyumapaです。


知識に乏しい私なりに考えておりましたが、
以前、plTackPrintにて行っていた時は、
 plTackPrint1.Excute.
 plPrev1.Show;
とコーディングしていたような記憶があります。

plTackPrevのPreviewメソッドにおいては、
ShowModalで表示されるため、呼び出しもとの
フォームに配置したplTackPrevを再描画しても
何ら再描画は起きない?ということなのでしょうか?

Mr.XRAYさんのサンプルコードでDisplayメソッドの
出てくるものを見ていますと、何れも、プレビュー
フォーム上に配置されたplTackPrevを再描画して
おられるような気がします。

何だか、毎度の如く、私の理解不足が原因のような
気もしております。


[1172] Re3:plTackPrevのDisplayメソッドについて返信 削除
2007/3/21 (水) 22:26:14 yumapa
▼ Mr.XRAYさん
 
お世話になりますyumapaです。
 
[1171]で以下のように発言しておりましたが
>  plTackPrint1.Excute.
>  plPrev1.Show;


 plTackPrint1.Excute;
 plPrev1.ShowModal;
とモーダル表示しておりましたので訂正します。

また、私のアプリにおいて、テストプログラム
(EnterPrev)と同様のタックシール印刷の部分で
試してみました。
その結果、プレビューフォーム上にplTackPrevコン
ポーネントを配置してさえいれば、Displayメソッドは
正常に動作しました。
ただし、プレビューフォームの呼び出しを
 plTackPrev1.Preview;
とするとうまく動きません。
 plTackPrevForm.ShowModal;
の如くplTackPrevを配置した、プレビューフォームを
ShowModalで表示させると、Displayメソッドは正常に
動作しました。
何らかの手がかりになると幸いです。

さらに、プレビューフォーム上のplTackPrevの
DataSetを動的に指定する場合
 plTackPrevForm:=TplTackPrevForm.Create(Self);
 plTackPrev1.DataSet:=Form2.Query2;
 plTackPrevFor.ShowModal;
とするとプレビュー画面が表示された時に
全く何も描画されておりません。
データセットの指定の方法が誤っているのでしょうか?


[1177] Re4:plTackPrevのDisplayメソッドについて返信 削除
2007/3/24 (土) 13:02:42 Mr.XRAY
▼ yumapaさん

レスが遅れて申し訳ありません.
同様な現象がでるように,いろいろやってみましたが,わかりません.

>  plTackPrevForm:=TplTackPrevForm.Create(Self);
>  plTackPrev1.DataSet:=Form2.Query2;
>  plTackPrevFor.ShowModal;
> とするとプレビュー画面が表示された時に
> 全く何も描画されておりません。


これは確認しました.PageNumberがらみのバグですね.
ところで,plTackPrevの仕様は次の考え方で作成しています.

DataSetを動的に設定する場合はカラムも設定する必要がある.
(使用するQueryによってカラムは当然違だろう)
このカラムの設定は,印刷位置,文字のサイズ,等などいいろいろある.
それならば,使用するDataSetをあらかじめOpenしておいて,
OnBeforePageDraw.... などのイベントでコード書いてしまった方がいい.

というものです.
つまり,

 Query1.Open;
  plTackPrevForm:=TplTackPrevForm.Create(Self);
 plTackPrevFor.ShowModal;

として,各イベント内で

plTackPrev1.TextOutLC(Query1.FieldByName('カナ').AsString);

のように.
というわけです.いかがでしょうか.

後,表示したプレビューフォームに,ボタン等を配置して,そのクリックで

procedure TplPrevForm130.plButton1Click(Sender: TObject);
var
     RecCnt : Integer;
begin
     Query1.Open;
     RecCnt:=Query1. RecordCount;
     if RecCnt>0 then begin
       plTackPrev1.LabelCount:=RecCnt;
       plTackPrev1.DataSet:=Query1;
       plTackPrev1.PageNumber:=1;
       plTackPrev1.Display(plTackPrev1.PageNumber);
     end;
end;

ということは可能です.




[1189] Re5:plTackPrevのDisplayメソッドについて返信 削除
2007/4/6 (金) 23:19:21 yumapa
▼ Mr.XRAYさん
いつもお世話になっております。yumapaです。


ご回答頂いておりましたのに、お礼が遅くなり申し訳ありませんでした。
本業は、プログラミングと全く関係ないことをしており、本業の方が
ゴチャゴチャとしており、久し振りに喫茶XRAY にお邪魔しました。

さて、

>  plTackPrevForm:=TplTackPrevForm.Create(Self);
>  plTackPrev1.DataSet:=Form2.Query2; ←*** この部分 ***
>  plTackPrevFor.ShowModal;


DataSetのQueryは既にOpenしております。
Form2.Query2とForm1.Query1は、同じデータベースであり
Form2とForm1では、フォーム上表示させるレコードを異にするものですが、
全く同じ項目を持った一つのデータベースです。
アプリの設計に問題があることは、度外視して(^^;
一つのplTackPrevFormで、Form2とForm1の両方から
タックシール(2列6行)を印刷したいと考えました。
そのため、plTackPrevForm上のplTackPrevのカラムの設定は、変更する
必要がありません。

>  plTackPrev1.DataSet:=Form2.Query2;
この部分において、Form2.Query2とForm1.Query1を動的に指定する
方法が間違っているのでしょうか?


質問の仕方が悪く申し訳ありませんm(_ _)m

 


[1193] Re6:plTackPrevのDisplayメソッドについて返信 削除
2007/4/10 (火) 20:24:20 Mr.XRAY
▼ yumapaさん

いつもスミマセン。
別に無視している訳ではありません。ここ二週間程、いろいろありまして。
おかげ様で今日、少し前進しました。
この問題はバグがらみですので、本当に申し訳ないのですが、もう少し...

最近サンプルの方を整備しているのは、その反抗みたいなものです。
ちょっとまいっています。(_ _)


INCM/CMT
Cyclamen v3.82