急求高手解决!!!!!!非常感谢!!!
数据库里有10条记录。值为1,2,3,4,5,6,7,8,9,10
我想要在delphi的panel里根据这10条记录的顺序生成10个同等大小的memo(每行四个memo,即这10个memo,分成三行,最后一行为2个memo),并且可以在panel内随意拖动这10个memo的顺序。
例如:当我把第4个memo拖到第2的位置时,发生的变化为:原本的第1个memo不动,第2memo就变成了第3个memo,第3个memo就变成了第4个memo,第4个memo就变成了第2个memo,第5-10个memo不动
1.根據數據庫記錄順序動態創建memo,並生成想要的行列memo樣式;
2.使用雙緩存才能拖動並移動互補
剩下的就是组件拖动,生成时给每个memo的tag附上序号,交换式,无非交换一下位置吗,tag改不改自己定
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
aMemo:TMemo;
i,x,y:integer;
begin
x:=0;
y:=0;
for i:=1 to 10 do
begin
aMemo:=TMemo.Create(self);
x:=x+100;
with aMemo do
begin
if i mod 4=1 then
begin
x:=0;
y:=y+90;
end;
Left:=x;
Top:=y;
Parent:=Form1;
Caption:='Memo '+IntToStr(i);
end
end;
end;
end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
procedure Memo1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure Memo1DragDrop(Sender, Source: TObject; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Memo1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := True;
end;procedure TForm1.Memo1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
l,t:Integer;
begin
l := TMemo(Source).Left;
t := TMemo(Source).Top;
TMemo(Source).Left := Memo1.Left;
TMemo(Source).Top := Memo1.Top;
Memo1.Left := l;
Memo1.Top := t;
end;end.
type
TPnlRec = record
iH,iL : Integer;
iChg : Integer;
sName : string;
pImg : TImage;//ExtCtrls
pRect : TRect;//Types
end; TDragImage = record
sName : string;
sKeyStr : string;
sPicPathName : string;
index : Integer;
iNodeId : Integer;
end;
PDragImage = ^TDragImage;
TImageViewYM = class(TWinControl)
private
{ Private declarations }
//只有在類被定義的單元中的代碼可訪問
ScrollBox1 : TScrollBox;//Forms
FAutoScroll : Boolean;//是否顯示滾動條
FMoveAction : Boolean;//排序移動效果
FHCTS : Boolean; //加速(繪製界面效果時)
FColCount :Integer; //6 列數
FCRDistance :Integer; //2 圖標間距
FCellWidth :Integer; //60圖寬
FCellHeight :Integer; //60圖高 FFontHeight : Integer;//文本區高度
FDragModel : Integer;//拖動模式,0=界面移動,1=圖標拖動
iDragFlag : Integer; FItemCout : Integer;//單元數量
FItemIndex : Integer;//點擊或選定的索引
FItemCaption : string;//點擊或選定的單元文本
FShowCaption : Boolean;//是否顯示文本 FTimer1 : TTimer; FItemClick : TNotifyEvent;//傳遞事件的指針
//設置函數
procedure SetColCount(const Value:Integer);
procedure SetMoveAction(const Value:Boolean);
procedure SetHCTS(const Value:Boolean); procedure SetCRDistance(const Value:Integer);
procedure SetCellWidth(const Value:Integer);
procedure SetCellHeight(const Value:Integer);
procedure SetDragModel(const Value:Integer); procedure drawImgView( img : TImage; iflag : Integer=0 );
procedure drawImgRect( img : TImage; sPicFile : string='.\img\img01.bmp'; sCap : string='' );
procedure pnlModMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure pnlModMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
function reArray( Sender: TObject ) : Integer;
procedure pnlModMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
function movePanelTo( pImage : TImage; ix,iy : Integer ) : Integer;
function addFullImage( Sender: TObject ) : Integer;
procedure loadBackPic(); procedure backMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); protected
{ Protected declarations }
//在類和其子孫被定義的單元中的代碼可訪問
pnlRec : array of TPnlRec;
iDx,iDy,iDown : Integer;
MyList : TList;
bMoving : Boolean;
pMouseDownPoint : TPoint;
iBigWH : Integer;//圖標擴大效果增量值 procedure FTimer1Timer(Sender: TObject); public
{ Public declarations }//給應用程序調用用
//所有代碼可訪問
constructor Create(AOwner:TComponent);override;
destructor Destroy;override; procedure ClearComponents();
procedure BuildComponents();
function AddItem( sName : string=''; sPic : string='' ) : Integer;
function DeleteItem( index : Integer ) : Boolean;
procedure ClearItem();