如何设计delphi 窗体里面的组件居中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设计delphi 窗体里面的组件居中相关的知识,希望对你有一定的参考价值。

请问如何把那些在窗体里面的组件在窗体最大化时自动居中,所有的组件都要居中,排位不变

参考技术A 在窗体上放一个 TPanel ;
Panel1 的 Align 属性设为 alClient ;
需要自动居中的组件都放在 Panel1 上 ;
在 Panel1 的 Resize 事件写以下代码:
Button1.Left := round((Width - 8 - Button1.Width) / 2); //常量8用于处理边界问题
Button1.Top := round((Height - 8 - Button1.Height) / 2);本回答被提问者和网友采纳
参考技术B 将控件放好后,设置Anchors属性.就可以了 参考技术C 可使用EasySize控件。

跪求Delphi+Mysql上传、下载图片的方法?

我使用的是DataSnap三层架构,在伺服器端使用的是TSQLDataSet控件,数据表涉及图片的字段类型为Blob,请问如何往数据库上传和下载(求详细步骤),谢谢大师赐教!!!

第7章 数据库处理实例

实例122 在数据库中存取图像

本实例演示如何在数据库中存取图像文件。

向窗体上添加一个TListBox组件、一个TImage组件和一个TTable组件,设计完成的主界面如图7-13所示。

图7-13 主界面

本系统中需要设计一个新的基于Paradox 7的数据库Image.db,图7-14为设计完成的Image.db数据库。

图7-14 设计完成的数据库

为了方便测试程序,Image.db数据库存储在实例程序所在的路径下。

设置TTable组件的TableName属性为Image.db,Active属性为True。

在程序运行初期,首先会判断Image.db数据库中是否存在记录,如果没有记录存在,那么就执行以下代码向Image.db数据库中添加“鸟.bmp”文件:

procedure TForm1.FormCreate(Sender: TObject);

var

mem:TMemoryStream;

begin

if Table1.Eof and Table1.Bof then

begin

with Table1 do

begin

Insert;

FieldByName(\'Name\').AsString:=\'鸟\';

mem:=TMemoryStream.Create();

mem.LoadFromFile(\'鸟.bmp\');

TBlobField(FieldByName(\'Data\')).LoadFromStream(mem);

Post;

end;

end;

end;

然后按照相同的方式顺序向Image.db数据库中添加“样品.wav”、“叶子.wav”和“荷花”图像文件。

最后通过下面的代码把Image.db数据库中存储的文件名字添加到窗体的TListBox组件中:

with Table1 do

begin

First;

while not Eof do

begin

ListBox1.Items.Add(FieldByName(\'Name\').AsString);

Next;

end;

end;

在程序运行过程中,如果用户在窗体的TListBox组件中选择了图像文件,程序会通过TTable组件的First方法把数据表中的第1条记录作为当前记录,然后通过一个循环来遍历数据库中的记录。如果某条记录中Name字段的内容和用户的选择相同,那么就把该记录中Data字段中的图像信息读取出来,并且把图像显示在窗体上的TImage组件上。代码如下:

procedure TForm1.ListBox1Click(Sender: TObject);

var

mem:TStream;

bmp:TBitmap;

begin

with Table1 do

begin

First;

while not Eof do

begin

if FieldByName(\'Name\').AsString=ListBox1.Items[ListBox1.ItemIndex] then

break;

Next;

end;

bmp:=TBitmap.Create;

mem:=CreateBlobStream(FieldByName(\'Data\'),bmRead);

mem.Position:=0;

bmp.LoadFromStream(mem);

self.Image1.Picture.Assign(bmp);

bmp.Free;

mem.Free;

end;

end;

程序代码如下:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DB, DBTables,mmsystem, ExtCtrls;

type

TForm1 = class(TForm)

ListBox1: TListBox;

Table1: TTable;

Image1: TImage;

procedure FormCreate(Sender: TObject);

procedure ListBox1Click(Sender: TObject);

private

Private declarations

public

Public declarations

end;

var

Form1: TForm1;

implementation

$R *.dfm

procedure TForm1.FormCreate(Sender: TObject);

var

mem:TMemoryStream;

begin

if Table1.Eof and Table1.Bof then

begin

with Table1 do

begin

Insert;

FieldByName(\'Name\').AsString:=\'鸟\';

mem:=TMemoryStream.Create();

mem.LoadFromFile(\'鸟.bmp\');

TBlobField(FieldByName(\'Data\')).LoadFromStream(mem);

Post;

Insert;

FieldByName(\'Name\').AsString:=\'样品\';

mem:=TMemoryStream.Create();

mem.LoadFromFile(\'样品.bmp\');

TBlobField(FieldByName(\'Data\')).LoadFromStream(mem);

Post;

Insert;

FieldByName(\'Name\').AsString:=\'叶子\';

mem:=TMemoryStream.Create();

mem.LoadFromFile(\'叶子.bmp\');

TBlobField(FieldByName(\'Data\')).LoadFromStream(mem);

Post;

Insert;

FieldByName(\'Name\').AsString:=\'荷花\';

mem:=TMemoryStream.Create();

mem.LoadFromFile(\'荷花.bmp\');

TBlobField(FieldByName(\'Data\')).LoadFromStream(mem);

Post;

mem.Free;

end;

end;

with Table1 do

begin

First;

while not Eof do

begin

ListBox1.Items.Add(FieldByName(\'Name\').AsString);

Next;

end;

end;

end;

procedure TForm1.ListBox1Click(Sender: TObject);

var

mem:TStream;

bmp:TBitmap;

begin

with Table1 do

begin

First;

while not Eof do

begin

if FieldByName(\'Name\').AsString=ListBox1.Items[ListBox1.ItemIndex] then

break;

Next;

end;

bmp:=TBitmap.Create;

mem:=CreateBlobStream(FieldByName(\'Data\'),bmRead);

mem.Position:=0;

bmp.LoadFromStream(mem);

self.Image1.Picture.Assign(bmp);

bmp.Free;

mem.Free;

end;

end;

end.

保存文件,然后按F9键运行程序,程序运行的初始画面如图7-15所示。

在TListBox组件中选中一项后,就会显示相对应的图像文件,如图7-16所示。

图7-15 程序运行的初始画面 图7-16 程序运行结果
书上找的
参考技术A 在中间层写接口

以上是关于如何设计delphi 窗体里面的组件居中的主要内容,如果未能解决你的问题,请参考以下文章

delphi7中如何设定窗体里的组件随窗体变化?(按比例扩大或缩小)

delphi DBGrid里面的值如何自动更新

请问如何在delphi from窗体内加网页

Delphi如何访问父窗体

如何让窗口显示在电脑屏幕中间

delphi中,怎样设置新窗体打开时,就运行指定的SQL语句