Palm Programmer's Laboratory

トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

雑談掲示板

PPL雑談掲示板

ここは雑談用の掲示板です。


お名前
件名
本文


表示された文字列

Palmwareのデータベースを作っています - にっく (2007年10月22日 12時02分12秒)

こんにちは、大変ご無沙汰しております、にっくです。

#やっぱりプログラムは本業じゃないのであまり関われてません...

さて、Muchy.comがついに消失していましましたが、当方で似たようなものを開設しております。

Palmware Stockyard:
http://www.niku-nama.com/wiki/

こちらと同じWikiの構成をとっていまして、どなたでも投稿できます。
是非ご利用ください。

(悲しいことにこちらのFreeStyleWikiと違うWikiを設置していますので、タグが異なります。タグを使って文章を書く事には違いはありませんので、ホント、よろしければ是非。っていうか設置し直してリニューアルした方がいいか?)

お名前: コメント:


表示された文字列

データベースの使い方について教えてください。 - irija_bari (2007年10月13日 18時44分55秒)

質問させてください。

アドレス帳のようなデータベースとセットになっているアプリケーションでは、
どのようにデータベースを作成、オープン、クローズするものなのでしょうか?

下のコードのように、アプリケーション開始関数でデータベースをオープンすると、自動的にデータベースが作成されるようです。

しかし、アプリケーションを終了するときになにもしないと「メモリ リークが 1 つある」とエラー表示が出ます。
データベースをクローズ、または、メモリ ハンドルを解放すると「致命的なエラー」が表示されます。
どのような手順を踏むべきなのでしょうか?

DmOpenRef dmOpenRef;
UInt16	dbCardNo = 0;
MemHandle	dbHandle;
LocalID		dbID;

static Err AppStart(void)
{
	dbHandle = MemHandleNew(1);
	dbID = MemHandleToLocalID(dbHandle);
	dmOpenRef = DmOpenDatabase(dbCardNo, dbID, dmModeReadWrite);
	//この後、データベースをオープンできないときは、新たに作成、オープンするコードを
	//書いたのですが、使用されていないようです。
	...
}

static void AppStop(void)
{
	// Close all the open forms.
	FrmCloseAllForms();
	
	DmCloseDatabase(dmOpenRef);
	MemHandleFree(dbHandle);
}

また、Palm のデータベースには「カラム」という概念はないのでしょうか?

レコードが複数のカラムを持つため、カラムを「,」区切りにしてレコードに収めています。
問い合わせをするときには、全レコードに対して、

  1. レコードを取り出す
  2. 区切り文字で切り分ける
  3. 切り分けたデータに対して評価を行う

という手順を踏んでいます。なんだか、非効率な気がするのですが。。。

よろしくご指導ください。

コメント

  • Palm のデータベースの概念は、一般的な PC 環境やサーバ環境におけるいわゆる「Database」とは違います。どちらかというと、ファイルに近いものと考えたほうが良いでしょう。ひとまず、このあたりを読みましょう。また、「Palm OS Programmer's Companion Volume I」はざっとでもいいので全体を読み通すことをお勧めします。 - 陰郎 (2007年10月13日 21時13分37秒)
  • アドバイスをありがとうございます。Palm OS Programmer's Companion はいつも活用させてもらっています。2章の起動・終了コードにそれらしい記述があったので、サンプルプログラムも参考にして勉強してみます。概論を読むのがどうも苦手なのですよね。。。少しずつでもいいので覚えていきたいと思います。 - irija_bari (2007年10月14日 14時51分46秒)
  • >影朗さんレコード データの作成と取得には構造体を使用し、表示にはテーブルを使用すると便利なのですね。次はレコード データの変更に対応し、次はレコード データのカテゴリ分け、その次は PC との同期に対応しようと思っています。Companion の訳出作業は順調に進んでいるようですね。お疲れ様です。区切りが付いたら、アンカ対応をよろしくお願いします。 - irija_bari (2007年10月30日 11時36分45秒)
お名前: コメント:


表示された文字列

新メンバーです。よろしくお願いいたします。 - irija_bari (2007年10月10日 23時05分47秒)

新しくメンバーに入れていただきました Irija Bari です。
どうぞよろしくお願いします。m(_ _)m

ここのサイトを真似て(Palm OSの勉強も兼ねて)、Palm OS Programmer's API Reference の日本語訳を始めてみました。
Palm OS Programmer's API Referenceにあげています。

訳の仕方(用語の使い方など)の改善点がありましたらコメントをいただけるとうれしいです。
まだ、イベントの章とメモリ マネージャの章ができただけなのですが、利用できるレベルに達していれば、ぜひご活用ください。
(達していない場合は、どこがまずいのか教えていただけるとありがたいです。)

実際のプログラミングのほうは、ようやくcm単位で入力した数値をinch単位に変換して表示するところまでいきました。
メモリのハンドラとポインタの意味を理解するのに苦労しています。
家計簿ソフトはまだまだ遠いです^^;

  • 自己フォローです。ここから他のFSWikiにいけないようなので、Entrance of Bari's FSWiki よりお入りください。大変失礼しました。 - irija_bari (2007年10月10日 23時24分59秒)
  • > IrijaBariさん。いらっしゃいませ。早速ありがとうございます。ここから他のFSWikiに行けないのでは無く、infoseekのサーバーが他からのCGIの呼び出しを許可していなかったと記憶しています。 - たいち@管理人 (2007年10月10日 23時49分25秒)
  • > IrijaBariさん。ところで、「Palm OS Programmer's API Reference の日本語訳」というのは、すばらしいですね。もしよろしければ、PPLのメンバーとして、PPL内に記述して頂ければ、PPLとしても充実していきますし、間違った訳があればメンバーも修正等可能ですから、すばらしい物になっていくのではないかと思っています。せっかく残していくものですし、一カ所にまとまっていた方が、必要とする人たちにとっても便利な物になっていくと思っています。是非とも、ご協力頂ければ嬉しく思います。しかし、これは強制ではありませんので、判断は IrijaBariさんにお任せしますこと合わせて申し添えます。 - たいち@管理人 (2007年10月10日 23時54分12秒)
  • ポインタとハンドルの違いは、このあたりをご覧ください。下の方にある「メモリチャンクの概要」というところです。ところで、API Reference の訳出ですが、せっかくですからこのサイト内で作業されてはいかがでしょう...と陰郎からもたいちさんと同意見を。 - 陰郎 (2007年10月11日 00時51分45秒)
  • Infoseek 側の問題だったのですね。Reference はこちらで使ってもらいたいと考えていたので、移行することに異存はありません。Palm について詳しい方に使えるレベルに達しているか判断してもらってからと考えていたのですが、その判断も含めてこちらで行うということであれば喜んで移行させていただきます。FSWiki のプラグイン(こちらで使用していないものを含む)をいくつか導入しているのですが、こちらでも導入して良いのでしょうか? - irija_bari (2007年10月11日 07時53分07秒)
  • >IrijaBariさん。ありがとうございます。プラグインの件ですが、導入したいのはどのプラグインでしょうか? - たいち@管理人 (2007年10月11日 09時55分14秒)
  • 以下の 5 つのプラグインです。ご検討ください。_ex_block: 複数行プラグインサポートの為の拡張, anchor (ver. Goto_20060921_gyo): ページ内アンカの為の拡張, blocksample: _ex_blockのサンプル, tag2: 装飾用に用いられるHTMLタグを利用可能にします。(<a>,<img>,<br>,<span>,<div> 他各種), word: 文字列装飾プラグインを導入します - irija_bari (2007年10月11日 11時01分57秒)
  • 使用プラグインを精査しました。以下の 2 つを使用しています。anchor (ver. Goto_20060921_gyo): ページ内アンカの為の拡張, tag2: 装飾用に用いられるHTMLタグを利用可能にします。(<a>,<img>,<br>,<span>,<div> 他各種) - irija_bari (2007年10月15日 14時29分36秒)
  • >IrijaBariさん。ちょっと私でも調べてみますね。一番心配しているのは、今現在ある記事に影響が出ないのかどうか。それが心配です。いろいろ試しながらやっていきたいと思います。終わったら、またこちらへ書き込みますね。 - たいち@管理人 (2007年10月15日 14時44分26秒)
  • >IrijaBariさん。Anchorプラグイン導入しました。tag2プラグインは既に使用可能になっています。何か有りましたら、またご連絡ください。 - たいち@管理人 (2007年10月22日 10時57分55秒)
  • >たいちさん。プラグイン対応ありがとうございます。早速いくつかアップしてみました。勝手ながら「ドキュメント」ページにReferenceの項目を追加させていただきました。何か問題がありましたら、ご連絡をお願いします。 - irija_bari (2007年10月22日 19時36分21秒)
  • >IrijaBariさん。質問です。Reference トップページのガイドラインに、カタカナ語の間には半角スペースを空けるように、とありますが、これは何故ですか? また、アンカーですが、既訳のページにもアンカー参照を入れる作業をした方がいいのでしょうか...? いや、それが望ましいのは重々承知の上ですが、Companion I については既に訳出作業が終盤に差し掛かっているので、もしやるならば現状の作業手順で訳出がいったん完了してからにしたいのです。 - 陰郎 (2007年10月22日 20時22分10秒)
  • >陰朗さん。カタカナ語が連続すると、語の区切りがわかりにくいので半角スペースを入れることにしています。Reference内では統一したいので、そのように書きました。アンカー、リンクを入れる作業については、あくまでもお願いです。入れていただけるならば、作業される方のペースに合わせて行ってください。 - irija_bari (2007年10月22日 21時06分59秒)
お名前: コメント:


表示された文字列

ARMlet からの HIGH_DENSITY_TRAP コール - 陰郎 (2007年10月03日 23時02分47秒)

万策尽きつつあるので救助願いです。

ARMlet から Palm OS API をコールするときは call68KFuncP に PceNativeTrapNo を被せた sysTrap ナンバーを渡します。これは自分でここに書いたことなので理解しているつもりなのですが、High Density 系 API は CoreTraps.h に載っておらず、個々のヘッダファイルに SYS_TRAP ではなく HIGH_DENSITY_TRAP として記載されています。これらの API は ARMlet からコールバックすることはできるのでしょうか? 何かご存知の方がいらっしゃいましたらご教示願えると幸いです。

お名前: コメント:


表示された文字列

標準PIMのソースコードについて - 紅音 (2007年09月30日 23時16分25秒)

初めまして。久方ぶりにPalmプログラミングをしてみようと思い、PODSに関する情報を探していたらこちらを見つけました。
標準PIM(予定表、アドレス帳、ToDo、メモ)のソースコードを探しております。
PalmSource社の頃はSDKか何かに同梱されていたと思ったのですが、現在ACCESS社にて配布されているファイル群の中には見つけることが出来ませんでした。
記憶が曖昧なので私の思い違いかも知れませんが、どなたかご存知ではないでしょうか?
また、記憶違いでなかった場合、そのソースコードを頂くことはできないでしょうか?(ライセンス的に問題がなければですが・・・)

最新のPalm社のCalender、Contacts等のソースコードでも構わないのですが、こちらも私が探せた範囲では公開はされていないように思います。
標準PIMにちょっと手を入れた程度のものを作るのに一からコードを起こすのも大変なので、標準PIMのコードが公開されているのであれば参考にできればと思った次第です。
宜しくお願い致します。

コメント

  • 紅音さん、始めまして。標準 PIM のソースコードですが、PODS には同梱されていませんか? 今職場なのですぐに確認できませんが、帰宅したら確認してみます... - 陰郎 (2007年10月01日 11時08分40秒)
  • 確認しました。PODS を初期設定のままインストールした場合で、C:\Program Files\ACCESS\Garnet OS Development Suite\sdk-5r4\samples 配下にサンプルはありますね。ただ、標準 PIM に関してはメモとToDoしかないようです。 - 陰郎 (2007年10月01日 20時09分08秒)
  • PODS とは別でダウンロード可能な Palm OS SDK には Address と Datebook も含まれていました。メンバー登録が必要ですが、http://www.access-company.com/developers/downloads/index.html からになります。PalmOS_5_SDK_68K_R3_no-install.zip の場合ですと、PalmOS_5_SDK_68K_R3_no-install/CodeWarrior Support/(CodeWarrior Examples)/Palm OS 5 SDK (68K) R3 Examples/ 配下にサンプルコードがありますね。 - 陰郎 (2007年10月01日 20時15分21秒)
  • お礼が遅くなり申し訳ありません。無事に見つけることができました。まさかCordWarriorディレクトリ内にあるとは考えもせず、完全に見落としてました。ありがとうございました。 - 紅音 (2007年10月05日 23時09分32秒)
お名前: コメント:


表示された文字列

ハイレゾ表示時でのテーブルにおける、行の高さについて - 風間 (2007年07月21日 12時26分55秒)

すいません、表題の件について質問させてください。
先日よりCodeWarrior環境でPalmの開発の勉強をはじめました。
只今サンプル・コードと睨めっこをしながら悪銭苦闘をしています。
それで表題の件でつまづいてしまいました...。

フォントをhrSmallFontで設定、
TblSetRowHeightで高さを指定し、
各行をHRWinDraw〜で描画させると、
一応画面上はハイレゾフォントで表示されます。
ところが、実際に選択行をハイライト表示させると、
カーソルの高さが...多分通常のフォントの高さで表示されてしまいます。
つまり、各行はhrSmallFontで表示されているのですが、
ハイライトとなる行の高さがhrSmallFontより高くなってしまうので、
他の行にかぶさってしまいます。
これをきちんと表示されるには何か別の設定が必要なのでしょうか?

解決のヒントになるようなものがありましたら、
教えていただけませんでしょうか、
よろしお願いします。
 

コメント

  • 風間さん、始めまして。まず、HR 系を使っていますが、CLIE 前提と言うことでいいのでしょうか? Sony の SDK には詳しくありませんが、おそらくはテーブル自体が選択行を再描画するところをデバイス任せにしてしまっているのでは、と思いました。TblSetCustomDrawProcedure 関数は使っていますか? こいつは TableDrawItemFuncType で定義される関数ポインタを登録するもので、customTableItem に指定されたカラムの再描画が必要なときにこの関数ポインタをコールバックしてきます。Table.h をざっと眺めた限り、コールバックを要求する API は2〜3個しかないため、他に方法はなさそうです。つまり、全体で hrSmallFont を使いたいのであれば、全カラムを customTableItem 扱いにしなければならない、ということになるかもしれません。長々と書きましたが、それほど自信を持って書いているわけではないので、ハズしていたらごめんなさい。 - 陰郎 (2007年07月21日 15時05分53秒)
  • 陰郎さんレス、ありがとうございます。 おっしゃる通りにCLIE 前提で考えてます。 ご指摘の通りにTblSetCustomDrawProcedure 関数を使用してます。 始めにTblSetItemStyle、TblSetItemInt等でテーブルを作成し、TblSetCustomDrawProcedureでテーブルを描画しています。 カラムは2個しかないのですが、一応どちらもcustomTableItemの指定にしてあります。 すいません、まだ全然詳しいことを理解できていないのですが、「全カラムを customTableItem 扱いにしなければならない」というのは、それとは別のことでしょうか? 選択行を再描画する時に何か指定が必要ってことなんでしょうか? う〜ん、難しいなぁ。。。 - 風間 (2007年07月22日 02時24分12秒)
  • あれ? なん re-にならないんだ?記入の仕方間違えましたか? - 風間 (2007年07月22日 02時27分42秒)
  • あー、既に TblSetCustomDrawProcedure 関数は使っていますか。2カラムあって、両方とも customTableItem 指定なんですね。「各行をHRWinDraw〜で描画」しているとのことですが、これは TblSetCustomDrawProcedure で登録したコールバック関数の中でもやっているんですよね? 何が言いたいかというと、選択やスクロールといったタイミングで発生する再描画でもそのコールバック関数が呼ばれるはずだったと記憶しているからです。テーブルコントロールはPalmのUIで一番ややこしいので、慣れるまでは大変ですよね(かくいう陰郎もまだまだ慣れてませんが)。可能ならば関連するコードを抜粋でもいいので載せてもらえると話が早いかもしれません。 - 陰郎 (2007年07月22日 03時09分41秒)
  • テーブルが一番ややこしいのですか? ありゃりゃ。 すいません初めてPC系のコードに触るので、右も左も分からないんですよ。 で、私が使っているサンプルというのはこちらのサイトの「小さなフォントの描画方法」で紹介されている某リーダーのソースです。 HRWinDrawCharsともう一つ別の描画方法を試してみましたが、結果は同じでした。 もしご教授いだだけるのなら、どの辺りのソースを抜粋すればよろしいですか?  - 風間 (2007年07月22日 07時31分29秒)
  • そうですね。陰郎としてはテーブルが一番ややこしいと思ってます。ガジェットもややこしいですが。で、もしコードを提示していただけるなら、テーブルの初期化部分とコールバック関数で実際に文字を描画しているあたりでしょうか。陰郎はSDKスタイルは苦手ですし、「教授」できるほどテーブルに習熟してもいません。なので、一緒に考えましょうというスタンスでやらせてくださいね。 - 陰郎 (2007年07月22日 11時34分42秒)
  • すいません、ありがとうございます。私の方では万策尽きた感じなので、試せることがあればなんでもやってみたいのでよろしくお願いします。ではまず全体の流れです。 - 風間 (2007年07月22日 13時35分45秒)
TablePtr tableP;
WordrowsInTable;
RectangleType rect;

tableP = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, mainDocumentTable));

FntSetFont( MainFormFont);
HRFntSetFont( hrRefNum, MainFormFont);

FrmGetObjectBounds(  frm, FrmGetObjectIndex (frm, mainDocumentTable) , &rect);

TableRows = rect.extent.y / FntCharHeight();

rowsInTable = TableRows;

MainViewLoadTable (frm, TopVisibleRecord);//ここでテーブルを初期化してます

// Set the callback routine that will draw the records.
TblSetCustomDrawProcedure (tableP, 0, MainViewDrawRecordName);
TblSetCustomDrawProcedure (tableP, 1, MainViewDrawRecordSize);

// Set the column usable so that it draws and accepts user input.
TblSetColumnUsable (tableP, 0, true);
TblSetColumnUsable (tableP, 1, true);

MainViewUpdateScrollers ();

FrmShowObject( frm ,FrmGetObjectIndex( frm, mainDocumentTable));
FrmDrawForm(frm);
prefs.currentView= MainForm;
  • 次にテーブルの初期化です - 風間 (2007年07月22日 13時40分06秒)
static void MainViewLoadTable (FormPtr frm, UInt recordNum)
{
    Word row;
    Word lastRecordNum;
    Word numRows;
    TablePtr tableP;
    
    tableP = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, mainDocumentTable));
    
    // For each row in the table, store the record number in the 
    // table item that will display the record.  
    numRows = TblGetNumberOfRows (tableP);
    
    //numRows = TableRows;
    
    FntSetFont( MainFormFont );//行の高さを指定するため?
    HRFntSetFont( hrRefNum, MainFormFont);
    
    for (row = 0; row < numRows; row++, recordNum++)
    {
        
        if ((  row < ((prefs.storage_mode==STORAGE_INTERNAL)?TotalDocuments:numMSFiles)) && ( row < TableRows) )
        {
            TblSetItemStyle (tableP, row, 0, customTableItem);
            TblSetItemStyle (tableP, row, 1, customTableItem);
            
            //TblSetItemStyle (tableP, row, 0, textTableItem);
            //TblSetItemStyle (tableP, row, 1, textTableItem);
            
            TblSetItemInt (tableP, row, 0, row);
            TblSetItemInt (tableP, row, 1, row);
            
            TblSetRowUsable (tableP, row, true);
            
            TblSetRowHeight ( tableP, row , hrRefNum*2);
            
            TblSetRowSelectable ( tableP, -1 , true);
            
            lastRecordNum = row;
        
        }
        else
        {
            TblSetRowUsable (tableP, row, false);
        }
        
        TblMarkRowInvalid (tableP, row);
    
    }

}
  • 次は実際にテーブルを描画させます - 風間 (2007年07月22日 13時42分26秒)
static void MainViewDrawRecordName(VoidPtr tableP, Int16 row, Int16 column, RectanglePtr bounds)
{
    UInt docNum = 0;
    
    docNum = TblGetItemInt (tableP, row, column) + TopVisibleRecord;
    
    if ( prefs.storage_mode == STORAGE_INTERNAL)
        MainViewDrawRecordInBounds(doc_infos[ docNum]->name , bounds);
    else
        MainViewDrawRecordInBounds( ( MSFileListP + docNum)->file_name , bounds);
}
  • で、以下を呼び出しています - 風間 (2007年07月22日 13時44分34秒)
static void MainViewDrawRecordInBounds( CharPtr doc, RectanglePtr bounds)
{
    short textLen,width;
    Boolean fits;
    FontID currFont;
    int x,y;
    char ch;
    x = bounds->topLeft.x + 1;
    y = bounds->topLeft.y;
    
    
    //テーブル描画のフォント指定
    FntSetFont ( MainFormFont);
    HRFntSetFont( hrRefNum, MainFormFont);
    
    // Determine the length of text that will fit within the bounds.
    width = bounds->extent.x - (FntCharWidth(ch)+4) - 4;
    textLen = StrLen(doc);
    FntCharsInWidth(doc, &width, &textLen, &fits);
    
    if ( fits){
        HRWinDrawChars(hrRefNum, doc, textLen, x, y*2 );
    } else {//ファイル名が長い時の対応
        width = bounds->extent.x - (FntCharWidth(ch)+4) - 4- FntCharsWidth("...",3);;
        textLen = StrLen(doc);
        
        FntCharsInWidth(doc, &width, &textLen, &fits);
        HRWinDrawChars(hrRefNum, doc, textLen, x, y*2 );
        HRWinDrawChars(hrRefNum,"..." , 3 , x + width , y*2 );//ハイレゾ・フォントで描画
    }
}
  • と、こんな風になってます。一応これでハイレゾ表示は出来ているのですが、選択行をハイライト表示させるとその行だけが高さがおかしくなってしまいます。ハード上ではハイレゾということを認識できてないからなんでしょうか?すいませんが、よろしくおねがいします。 - 風間 (2007年07月22日 13時46分56秒)
  • えぇと、まず勝手ながらコメント欄に載せていただいたコード部分を整形しました(【改行】ってなってた部分ですね)。で、コードの内容ですが...ちょっと待ってくださいね。まとまった時間を見つけてやりますんで。(汗 - 陰郎 (2007年07月22日 16時24分31秒)
  • 念のために確認しようと思って自分のアプリでテーブルを使っている部分をデバッグしてみたのですが、テーブルの描画後に特定の行を選択状態にしても、件のコールバック関数は呼ばれませんでした。風間さんのコードで言えば、MainViewDrawRecordInBounds が呼ばれない、ということです。ということは単純に描画済みの領域を Invert しているだけ? ...すみません、ちょっと調べてみますね。 - 陰郎 (2007年07月22日 16時53分25秒)
  • すみません、やはり SDK を直で使うコトに慣れていないので、認識が甘かったようです。Palm OS API リファレンスに当たってみたところ、TableDrawItemFuncType のコールバック関数は、TblDrawTable または TblRedrawTable 呼び出し時にコールされるということで、単にテーブル上の行の選択状態が変化しただけでは呼ばれないようです。では、なぜ選択した行が通常フォントの高さで描画されるのか...? もうちょっとコードを読ませてください。 - 陰郎 (2007年07月22日 17時09分30秒)
  • と、いまさら気付いたのですが、冒頭の質問文の中で、「選択行をハイライト表示させると、カーソルの高さが」と書かれていますね。カーソル? ということは、ひょっとして in place でセルの内容を編集しようとしています? もしそうだとして、(CLIE のスモールフォントに詳しくないので自信ないのですが、)そもそも small/tiny フォントでの文字入力ってできるんでしたっけ? ココまで書いたことがハズしていないのであれば、問題の切り分けのために「選択状態に入っても編集はしない」みたいなことは試せますか? - 陰郎 (2007年07月22日 17時15分39秒)
  • すいません、説明の仕方が悪いようです。決して編集しようとはしていません。テキスト・リーダーにしようと思ってます。ですからディレクトリ内にあるファイルの一覧をテーブル内に表示し、閲覧したいファイルをジョグ・ダイアルを使って選択したいわけです。このときにジョグをアップ、ダウンさせると各行がハイライト表示になるのですが、このハイライトになる高さがおかしくなってしまうのです。ですから編集モードにはしていないつもりです。それとも編集状態になってしまっているのか。少なくとも画面からは入力はできません。 - 風間 (2007年07月22日 18時15分06秒)
  • いろいろチェックしていただいてありがとうございます。ご指摘の通りにジョグのアップダウンだけでは再描画のルーチンは通らないようです。それともジョグのアップダウンするルーチン内に何か行の高さにかかわる再描画を実行されているのか? - 風間 (2007年07月22日 18時33分39秒)
  • TblSelectItem(GetObjectPtr (mainDocumentTable),choice - TopVisibleRecord,0);というのを見つけました。どうやらこの関数で選択した行をハイライトさせているようです。ちなみに、この行の前に//TblSetRowHeight ( GetObjectPtr (mainDocumentTable), choice - TopVisibleRecord, hrRefNum*2);という一文を入れてみたのですが、効果はないです。TblSelectItemに対して行の高さの指定を何とかする方法を探せればいいのでしょうか。 - 風間 (2007年07月22日 20時59分17秒)
  • えと、ひとまず確認です。上記の TblSelectItem 関数を使用しているのは vchrJogDown イベントなどのハンドリング中ですよね? で、この選択状態の設定と同時に行の高さが変わりますか? また、行の高さが変わった時点で、それまで small ( あるいは tiny?)フォントで表示されていたテキストはどうなります? 標準フォントで再描画されますか? それとも字は小さなままで、行の高さだけが変わりますか? これまでの経緯を見る限り、おそらく後者だろうと予想していますが... - 陰郎 (2007年07月22日 22時17分35秒)
  • おっしゃる通りに字の大きさは変わりません。行の高さも変わりません。ハイライトされる高さが変わります。実際に行の高さを指定しているTblSetRowHeight ( tableP, row , hrRefNum*2);のをTblSetRowHeight ( tableP, row , 6);とわざと低く指定してみると実際の行の高さも、フォントの大きさも変わらず、単純にハイライトされる部分の高さのみ通常フォントサイズの高さでハイライトされてしまいます。6と指定すると2行が同時にハイライトされます。ちなみに15に指定してもハイライトされる高さはやはり通常フォントサイズの高さです。この辺りの設定を変えてもハイライトされる高さは変わりませんね。なんか根本的に間違ってるのか?  - 風間 (2007年07月23日 00時24分24秒)
  • 選択行をハイライトさせるのに、今はTblSetRowSelectableを使ってるんですが、もしかしてHRWinDrawInvertedChars関数を使って自前で処理をさせれば可能かもしれませんね。ちょっとチャレンジしてみます。 - 風間 (2007年07月23日 11時50分35秒)
  • 記憶があいまいな上に憶測で書いてしまうのが申し訳ないのですが、テーブルって行ごとに高さを変えられたような気がします。なので、変な話ですが TblSelectItem 関数を呼び出す直前に対象の行の高さを設定しなおしてやったりしてもダメでしょうか? それでもダメなら、たしかに丸ごと自前でやらざるを得ないかもしれませんね...うーん、あまりお力になれず、申し訳ないです。 - 陰郎 (2007年07月23日 22時18分00秒)
  • HRWinDrawInvertedChars関数でうまく行きました。これだけで1週間位ずっと悩んでいたので気分がホッとしました(^^; TblSelectItem 関数の前で行の高さを指定しても反応してくれませんね。通常の関数ではハイレゾのことは全く認識してくれないみたいです。とりあえずテーブルの描画についての多くは自前でやるように作り直してみます。今回は沢山の時間を私のために割いていただいてアドバイスをいただきまいしてありがとうございます。一人で考えていると迷路に迷いこんでしまって抜け出せなくなっていたのですが、陰郎様にいろいろな角度で考えるチャンスをいただけたので凄く助かりました。ほんとうにありがとうございます。また壁に突き当たったらアドバイスをお願いするかもしれませんが、よろしくお願いします(^^; - 風間 (2007年07月24日 10時01分09秒)
  • 礼には及ばないです(大して役に立ってませんし)。もし良かったら、風間さんが答えられるような質問を見つけたときに力になってあげてください。それにしても Sony SDK の HR 系は厄介そうですね。HR 系ではないのですが、TH55 のワイドディスプレイに手を出そうかな...と考えていたもののちょっと気が引けてしまいました。(笑 - 陰郎 (2007年07月24日 21時35分34秒)
  • 今さらかもしれませんが、私がArisaというアプリで同じような苦労をしましたので、参考に。TblSetItemStyle (tableP, row, 0, customTableItem);と設定されていますが、マニュアルをご覧になればお分かりになられるように、customTableItemでは、11ピクセルの高さに固定されます。tallCustomTableItemを設定すれば、TblSetRowHeightで設定されたサイズに従って描画されるはずです。 - 大野 一樹 (2007年07月25日 00時18分25秒)
  • ちなみに、tallCustomTableItemは、OS4以上だけで使えます。 - 大野 一樹 (2007年07月25日 00時20分35秒)
  • ♪大野様 出来ました〜! tallCustomTableItemを指定したところ設定した高さで描画されました。ありがとうございます。いや、昨夜もう一度APIを読み直していたらcustomTableItemの項に「The height of the item is fixed at 11 pixels」というのを発見したので、こりゃやっぱり自前関数か...と溜息が出てたところです。でも、今朝見たら大野様のアドバイスがあり、早速試したところ上手く行きました。ありがとうございます。♪陰郎様 私で答えられることなんて今は皆無ですが、もっと勉強して何かお役に立てるようになりたいと思います。今回はいろいろをお付き合いしていただきまして本当に感謝してるんですよ。一緒にHR系のどツボにはまりましょう(^^; というわけで、一応今回の私がハマッた行高の解決方法をまとめておきます。【問題】テーブルでhrSmallFontを指定した場合、行高が11ピクセルに固定されているので、不自然な表示になってしう。【解決】これを防ぐために、TblSetItemStyleのtypeにtallCustomTableItemを指定すること。そうするとTblSetRowHeightで指定した行の高さで表示できるようになる。以上、しかしAPIの日本語訳ってどっかにないんですかね? - 風間 (2007年07月25日 10時41分00秒)
  • 私の情報が参考になったようで、私としてもほっとしています。あまりにも色々やり取りされているので、全部見ていないもので。でもAPIの日本語欲しいですよね。 - 大野 一樹 (2007年07月25日 12時33分31秒)
  • 反応が遅くなりました。大野さん、ご指摘ありがとうございます。tallCustomTableItem というのがあるんですね。知りませんでした。ちなみに、山田達司さん訳の 「Palm OS 4 バイブル」には tallCustomTableItem が載っていなかったので気付いたのですが、多分 tallCustomTableItem は Palm OS 4 以上で、かつ 4.0 New Feature Set がないと使えないのだろうと思います。きっとこれ、ほとんど neary equal なんでしょうけどね。 - 陰郎 (2007年07月29日 13時16分46秒)
お名前: コメント:


表示された文字列

PODSでDAを - 陰郎 (2007年06月08日 00時54分10秒)

PODSでDAを作成されている方っていらっしゃいますか?
これまで CodeWarrior で開発をしてきましたが、DA を手始めとして順に PODS ベースに(完全には無理かもしれませんが)移行しようと考えています。
で、最初にやろうとしたのが FortuneDA の PODS 版作成...だったのですが、CodeWarrior でいうところの「68Kコードリソース」の作成の仕方がイマイチわかりません。このあたりの手順に詳しい方がいらっしゃいましたら、ご教示いただけると幸いです。

コメント

Re: - 陰郎 (2007年06月08日 21時54分48秒)
CodeWarrior 向けに作成した FortuneDA からよりも、オリジナルの( makefile が用意されている )FortuneDA を利用したほうがすんなり行きそうなので、そちらで挑戦しています。理屈はなんとなくわかったのですが、どうも歯切れ良く収まりません...試行錯誤中です。
Re: - 陰郎 (2007年06月08日 22時56分03秒)
ひとまず DA のビルドが通るようになりました。できるだけ PODS をインストールした素の状態で通せるように、と思ったのですが、PODS 標準(?)の Palm OS Resource Builder (だっけかな)をうまく使いこなすことができず、make ファイルから PilRC を呼ぶ方式としました。そのほか、このあたりのことは近いうちに情報としてまとめます。また、PODS のエディタでShift-JIS が使えないっぽい(陰郎の設定がマズいだけ?)問題などなどありますので、それも近いうちに。
お名前: コメント:


表示された文字列

クリエータID登録の現在 - くわたん (2007年06月03日 14時45分59秒)

PalmSouceからAccessに移管されてしまったわけですが、
CodeWarrior上で新規にPalmwareを作成する場合、
「クリエータ」の管理はどうすればいいのでしょうか?
以前は事前にPalmsouceに登録申請していたはずですが、
Accessに新規デベロッパ登録しなければならないのでしょうか?
みなさんはどうしてますか?

Re: - 陰郎 (2007年06月03日 15時16分32秒)
PalmSource 時代から変わっているのかそのままなのか、記憶がはっきりしないのでゴメンナサイなのですが、次のURL からログインしてクリエータIDを登録しています。https://www.developerpavilion.com/palmos/ 特に移管前後で変更はなかった気がしますが...記憶違いだったらゴメンナサイ。
Re: - くわたん (2007年06月05日 01時17分00秒)
失礼しました。 ログインパスワード勘違いしているだけでした。 おっしゃるとおり、移管問題ないですね。 おさわがせしました。
Re: - admin (2007年06月18日 18時38分56秒)
コメントスパムが来ますので、コメント欄をコメントアウトしました。コメントを追加したい方は、コメント欄の復活させるか、または直接編集してください。

記事を作っていたら - think_palm (2007年05月13日 15時09分20秒)

記事を作り、最後にスパム対策のコードを入力すると、間違いだったみたいで、はねられちゃいました。
「戻る」をクリックすると記事全文消えちゃいました。

みなさんお気をつけ下さい。

お名前: コメント:


表示された文字列

ARMlet からの API コールバックのコストについて - 陰郎 (2007年05月01日 12時26分29秒)

表題の件について情報をお持ちの方を探しています。
ARMlet から Palm OS API を呼ぶ方法については「【C/C++】 ARMlet での Palm OS API の呼出し方」に書いたとおりですが、この方式で呼び出した場合のコストについて心配しています。実際問題として、ARMlet から API を呼ぶ場合の作法はいささか煩雑ですし、いったん 68K に戻してから API を呼んでいるように見えます。これらが結構コスト高に見えるわけです。となると、ARMlet 中で API 呼び出しが頻発する場合、ARMlet の利点を相殺してしまうような損益分岐点が発生しうるのかな...と。
実際問題としては、たとえコスト高だとしてもそれが ARMlet のメリットを相殺してしまうようであればそもそも ARMlet にする価値のないロジックだった...という話になるかもしれません。そういった点はひとまず置いて、このような経験をされた方がいましたらご意見いただけると幸いです。

 

コメント

お名前: コメント:


表示された文字列

[ 1 2 3 4 5 ]