HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
0927
ラビット時間の表示を右はじにしたい5解決


ラビット

リンク

2024/9/27(Fri) 09:04:04|NO.102272

時間の表示が左つめになっています。それを中央または右つめにしたいのですが、
もし出来るとしたら、どこを直すといいですか?
誰か教えてください。


; 時間 (アップダウン) pos 50,145 winobj "sysdatetimepick32", "", , $50000000 | $9,200,50 hDtp.1= objinfo(stat, 2) sendmsg hDtp.1, $30, hFont sendmsg hDtp.1, $1005, , "HH時mm分"



この記事に返信する


へび

リンク

2024/9/28(Sat) 20:47:32|NO.102273

gettime関数で変数に取得して、あとはmesとposで好きなように表示させれば良いのではないでしょうか?



沢渡

リンク

2024/9/29(Sun) 13:16:40|NO.102275

sysdatetimepick32について色々調べたり試したりしてみましたが、
私の調べた限り、右寄せで表示する方法は見当たりませんでした。
(ウィンドウスタイルにES_RIGHTを追加してもダメ。
 DTM_GETDATETIMEPICKERINFOを使えばテキストボックスのハンドルを
 取得できると聞いたので試してみても、結局ハンドルは取得できず)

「時間の表示」と仰っていますが、sysdatetimepick32を使う理由は
それだけでしょうか?
sysdatetimepick32はユーザーに日付や時刻を入力させるためのものなので、
表示だけを行うのであれば、へびさんの言うとおり関数で日時を取得し、
mes等で表示するのが良いと思います。

役に立つかどうかわかりませんが、
posで指定したカレントポジションに文字列の右側を合わせて表示するモジュールを
作ってみました。
これをソースコードの冒頭に置けばmes_exという命令が使えるようになります。

#include "user32.as" //mes_ex p1,p2,p3,p4 //文字列p1の内容を表示する。 //p2(省略時は-1):負の値の時はカレントポジションに文字列の左側を合わせる。 // 0の時は中央寄せ、正の値の時は右寄せ。 //p3(省略時は-1):負の値の時はカレントポジションに文字列の上側を合わせる。 // 0の時は中央寄せ、正の値の時は下寄せ。 //p4(省略時は0):0以外を指定した場合は文字列を描画したあとカレントポジションを右に移動させる。 // 0を指定するか省略時はカレントポジションを下に移動させる。 #module #const DT_CENTER 0x1 #const DT_RIGHT 0x2 #const DT_VCENTER 0x4 #const DT_BOTTOM 0x8 #const DT_CALCRECT 0x400 #define global mes_ex(%1="",%2=-1,%3=-1,%4=0) _mes_ex %1,%2,%3 #deffunc _mes_ex str text,int lr,int tb,int notcr dim rect,4 : opt=0 if lr=0 : opt|=DT_CENTER : else : if lr>0 : opt|=DT_RIGHT if tb=0 : opt|=DT_VCENTER : else : if tb>0 : opt|=DT_BOTTOM DrawText hdc,text,-1,varptr(rect),opt|DT_CALCRECT w=rect(2)-rect(0) : h=rect(3)-rect(1) if lr<0 { rect(0)=ginfo_cx : rect(2)=ginfo_cx+w } else { if lr>0 { rect(2)=ginfo_cx : rect(0)=ginfo_cx-w } else { rect(0)=ginfo_cx-w/2 : rect(2)=ginfo_cx+w-w/2 } } if tb<0 { rect(1)=ginfo_cy : rect(3)=ginfo_cy+h } else { if tb>0 { rect(3)=ginfo_cy : rect(1)=ginfo_cy-h } else { rect(1)=ginfo_cy-h/2 : rect(3)=ginfo_cy+h-h/2 } } DrawText hdc,text,-1,varptr(rect),opt mref bmscr,67 //DrawTextでの描画はredrawを使わないと反映されないので、redrawの必要があるかどうかを調べる。 if (bmscr(19)>>16)&0xFFFF { redraw 1,rect(0),rect(1),w,h } if notcr { pos ginfo_cx+w,ginfo_cy } else { pos ginfo_cx,ginfo_cy+h } return #global



沢渡

リンク

2024/9/29(Sun) 13:20:58|NO.102276

追記ですが、日時を特定のフォーマットに加工して表示するには
strf関数が役に立つと思います。

mes strf("%02d時%02d分",gettime(4),gettime(5))
というように。



ラビット

リンク

2024/9/30(Mon) 08:57:07|NO.102280

へびさん、沢渡さん いろいろ教えていただきありがとうございます。
ちょっと分からない関数もあったのでこれから勉強していきます。
ただ、かんたんにはいかないことが分かりましたので、すっきりしました。
ありがとうございました。これからもよろしくお願いします



沢渡

リンク

2024/9/30(Mon) 16:39:45|NO.102282

すみません、NO.102275のコードについて訂正です。

#define global mes_ex(%1="",%2=-1,%3=-1,%4=0) _mes_ex %1,%2,%3


#define global mes_ex(%1="",%2=-1,%3=-1,%4=0) _mes_ex %1,%2,%3,%4
に置き換えてください。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.102272への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2023(c) All rights reserved.