文字列を綺麗に並べるにはどのようにすれば良いのか、教えて欲しく、投稿させて頂きます。
現在、Listboxにこのように並んでます。
10:00
田中一郎 様 カット 担当:鈴木次郎
パーマ 担当:田中四郎
シャンプー&ブロー
伊集院峰弘 様 パーマ 担当:佐藤三郎
現在上記のように並んでいる文字列を
10:00
田中一郎 様 カット 担当:鈴木次郎
パーマ 担当:田中四郎
シャンプー&ブロー
伊集院峰弘 様 パーマ 担当:佐藤三郎
のように並べる方法はないでしょうか?
これは、入力画面で顧客名、メニュー、担当とあるのですが、
3つの全てを入力しなくても良いように出来てます。
そのため、シャンプー&ブローだけでも入力が出来ます。
TStringGridのように綺麗に並べたいのですが、ご教授頂けると幸いです。
このスレッドで教えて頂けると幸いです。どうぞよろしくお願いします。
書式を整えるならFormat関数が使えませんか?
あとフォントはプロポーショナルフォントは使用せずに
等幅フォントを使用した方が良いでしょう。
TListViewを使うという手は有?無?
TListboxっぽくふるまうことは可能です。
TListboxを使うなら私ならオーナードローを使いますね。
TListBoxなら、TabWidth設定してタブ文字(#9)で区切ればいいんじゃないかな
列ごとに幅を変えたかったら自分でLB_SETTABSTOPSを送らないといけなさそうですけど
>>TStringGridのように綺麗に並べたいのですが、
と言うならば、TStringGridに入れTStringGridの枠を消すのはどうでしょうか
単に文字列処理を行いたいってだけでは???
「様」、「担当:」の文字列をデリミタにしてスプリットしてスペースを付加して戻す。ってな感じでどうでしょう。
顧客名に「様」の文字があるならもう一工夫要るけど。
Ru様,monaa様,ttt様,3k様,スコピョン様。ご意見ありがとうございます!
凄い助かります! 皆さんの意見を参考にやってみようと思います!
等幅フォントのことですが、MS Pゴシックではまずかったでしょうか?
PCを買ってすぐに入っているデフォルトのフォントが解りません。
等幅フォントでどのPCでも使えるフォントがあれば教えてください。
よろしくお願いします。
真琴:「このような場合は TListViewを使うのが普通じゃない? ハルコさん」
春子:「まぁネ、でもナニかTListBoxを使いたい特別なワケがあるのかも、それで…」
const
MAX_TAB = 5;
TABCODE = #9;
type
TTabArray = array[0..MAX_TAB-1] of Integer;
TMultiStrings = class;
TListBox = class(StdCtrls.TListBox)
private
FMultiItems: TMultiStrings;
procedure SetMultiItems(Value: TMultiStrings);
published
property MultiItems: TMultiStrings read FMultiItems write SetMultiItems;
public
Tabulator: TTabArray;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure CreateWnd; override;
end;
TMultiStrings = class(TStrings)
private
ListBox: TListBox;
public
function Add(const S1, S2, S3: string): Integer; overload;
function Add(Value: array of string): Integer; overload;
end;
type
TForm1 = class(TForm)
ListBox1: TListBox;
........
implementation
uses Consts;
function TMultiStrings.Add(const S1, S2, S3: string): Integer;
var
S: string;
begin
with ListBox do begin
SendMessage(Handle, LB_SETTABSTOPS, MAX_TAB, Longint(@Tabulator));
S := S1 + TABCODE + S2 + TABCODE + S3;
Result := SendMessage(Handle, LB_ADDSTRING, 0, Longint(PChar(S)));
if Result < 0 then raise EOutOfResources.Create(SInsertLineError);
end;
end;
function TMultiStrings.Add(Value: array of string): Integer;
var
S: string;
i: Integer;
begin
with ListBox do begin
SendMessage(Handle, LB_SETTABSTOPS, MAX_TAB, Longint(@Tabulator));
S := Value[0];
for i:=1 to Length(Value)-1 do begin
if i >= MAX_TAB then break;
S := S + TABCODE + Value[i];
end;
Result := SendMessage(Handle, LB_ADDSTRING, 0, Longint(PChar(S)));
if Result < 0 then raise EOutOfResources.Create(SInsertLineError);
end;
end;
constructor TListBox.Create(AOwner: TComponent);
begin
inherited;
//TabWidth := 1;
TabWidth := (GetDialogBaseUnits and $FFFF) div 4;
FMultiItems := TMultiStrings.Create;
FMultiItems.ListBox := Self;
Tabulator[0] := 60;
Tabulator[1] := 130;
Tabulator[2] := 190;
Tabulator[3] := 250;
Tabulator[4] := 310;
end;
procedure TListBox.CreateWnd;
begin
inherited;
//SendMessage(Handle, LB_SETTABSTOPS, MAX_TABS, Longint(@Tabulator));
SendMessage(Handle, LB_SETHORIZONTALEXTENT, 1000 + GetSystemMetrics(SM_CXFRAME), 0);
end;
destructor TListBox.Destroy;
begin
inherited;
FMultiItems.Free;
end;
procedure TListBox.SetMultiItems(Value: TMultiStrings);
begin
Items.Assign(Value);
end;
{TForm1}
procedure TForm1.Button1Click(Sender: TObject);
begin
with ListBox1 do begin
MultiItems.Add(['Name','Operation','Person in charge','Reservation day','Charge']);
Items.Add(StringOfChar('-', 80));
MultiItems.Add(['田中一郎 様','カット','担当:鈴木次郎','8月25日','\3,500']);
MultiItems.Add(['','パーマ','担当:田中四郎']);
MultiItems.Add('','シャンプー&ブロー','担当:田中四郎');
MultiItems.Add(['伊集院峰弘 様','パーマ','担当:佐藤三郎','8月27日','\2,000']);
end;
end;
真琴:「ハルコさん、これはタブ設定だから等幅フォントでなくてもOKなの?」
春子:「そうよ、マコト、でも最大文字数がもっと増えたらタブ幅も調整しないと」
真琴:「これも便利、オープン配列コンストラクタって言うのネ?」
春子:「そういうワケ」
真琴:「だけど、この水平スクロールバーは無くてもイイんじゃない?」
春子:「それはオマケ、…しっかし、暦の上では秋なのに相変わらず暑いね〜」
真琴:「うん、それに昨日は三歳の男の子が迷子になっちゃって大変だったの」
春子:「えっ、迷子に? それでその子は見つかったの? マコト」
真琴:「大丈夫、見つかった、…海でおぼれたんじゃないかって皆心配したけど」
春子:「そっか、とにかく良かったね、無事で」
真琴:「ねぇ、ハルコさん、この前の夢の話なんだけど…」
春子:「ン? マコトが迷子になったって夢のコト?」
真琴:「そう、あの時ハルコさんは言ってくれたよね、これに懲りずに挑戦しろって」
春子:「えっ? そんなコトは…」
真琴:「また迷子になっても何度でも助けてあげるからって、アタシを励まして…」
春子:「違う違う、マコト、もうアタシは助けられないって言ったでしょ」
真琴:「そうよ、確かにそう言ったの、ハルコさんは…、やっぱりあれは夢じゃなかったんだね」
春子:「…マコト、アタシをひっかけた?」
ワケ様ご意見ありがとうございます! 大変勉強になりますv
結局はスコピョン様の意見の方法で解決しました! ありがとうございました!
フォントはMS ゴシックを使うことにしました。
ツイート | ![]() |