Картины внизу, посмотрите!
Первая коректно вторая с ошибкой.
Код:
Код:
public
procedure Futlar(c:utf8string; Numb:integer);
procedure LetBild;
procedure Abzug;
procedure MainCase(c:utf8string;n:integer);
procedure NextRowF;
procedure NextRow;
end;
const
SC_DRAGMOVE = $F012;
Spec = 'ß ü ö ä';
var
Form1: TForm1;
mods: array[0..128] of HMUSIC;
modc: Integer;
sams: array[0..128] of HSAMPLE;
samc: Integer;
strs: array[0..128] of HSTREAM;
strc, NonEmpty:Integer;
Captured:Bool;
rgn: HRGN; r: TRect;
livac,Xcor,yStep,Pomylke,wysoc,nyz:cardinal;
RightBord:cardinal;
Sprached, Slivce,aDir,BaseDir:utf8String;
Activ,activKon,created:Integer;
EinWort:TStringList;
Letteren: array [0..200] of Tpanel;
Konteiner:array [0..200] of TKontainer;
// Konteiner:array [0..200] of Tpanel; : Integer;
implementation
{$R *.dfm}
procedure TForm1.BetaMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var I:integer;
begin
for i:=0 to Created do
if Sender=Letteren[i] then
begin
activ:=i;
Break;
end;
Captured:=True;
Cursor:=CrhandPoint;
ReleaseCapture;
Letteren[activ].Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
end;
procedure TForm1.BetaMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Captured:=False;
Cursor:= crDefault;
end;
procedure TForm1.Button2Click(Sender: TObject);
var I:integer;
begin
for i:=1 to NonEmpty do
Letteren[i].DragMode:=dmManual;
end;
procedure TForm1.Button3Click(Sender: TObject);
var I:integer;
begin
for i:=1 to NonEmpty do
Letteren[i].DragMode:=dmAutomatic;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Caption:=hrdt.Text;
Beta.Font:=hrdt.Font;
// Letteren[n].Font:=
end;
procedure TForm1.FormCreate(Sender: TObject);
var ix:integer;
begin
baseDir:='C:\Embarcadero\Проэкты\StayOnTop\DE\SpecBank\';
DoubleBuffered:=True;
modc := 0; // music module count
samc := 0; // sample count
strc := 0;
EinWort:=TStringList.Create;
//EinWort.Sorted:=True;
RightBord:=Form1.Width;
nyz:=form1.Height-180;
Wysoc:=3;
Livac:=2;
xCor:=2;
yStep:=38;
LetBild;
Captured:=True;
Sleep(200);
Captured:=False;
if not BASS_Init(-1, 44100, 0, Handle, nil) then
end;
procedure TForm1.NextBtnClick(Sender: TObject);
var I:Integer;
begin
Log1.Items.Add(''+IntToStr(NonEmpty));
for i:= 1 to NonEmpty do
begin
letteren[i].Destroy;
Konteiner[i].Destroy;
end;
// LetBild;
end;
procedure TForm1.NextRow;
begin
wysoc:=wysoc+yStep;
Livac:=2;
end;
procedure TForm1.NextRowF;
begin
xCor:=2;
nyz:=nyz+yStep;
end;
procedure TForm1.Futlar(c:Utf8string; Numb:integer);
begin
// Konteiner[Numb]:=TPanel.Create(self);
Konteiner[Numb]:=TKontainer.Create(self);
Konteiner[Numb].ParentBackground:=False;
Konteiner[Numb].ParentFont:=False;
Konteiner[Numb].Parent:=Form1;
Konteiner[Numb].Height:=32;
if xCor+30>RightBord then
NextRowF;
Konteiner[Numb].Left:=xCor;
Konteiner[Numb].Width:=34;
Konteiner[Numb].Top:=Nyz;
Konteiner[Numb].Name:='Pl'+IntToStr(numb);
Konteiner[Numb].Font:=hrdt.Font;
Konteiner[Numb].Caption:=hrdt.Text[numb];
// .HideCapt:=true; c
Konteiner[numb].Font.Color:=clBlue;
// Konteiner[numb].OnMouseMove:=Zeta.OnMouseMove;
Konteiner[numb].DragMode:=dmAutomatic;
Konteiner[numb].OnDragOver:=Zeta.OnDragOver;
Konteiner[numb].OnDragDrop:=Zeta.OnDragDrop;
Konteiner[numb].Color:=clGray;
xCor:=xCor+34;
end;
procedure TForm1.ZetaDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept:= (Source is TPanel);
end;
procedure TForm1.ZetaMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); var I:integer;
begin
{ for I:=0 to Created do
if Sender=Konteiner[i] then
ActivKon:=I;
if konteiner[activKon].Caption=Letteren[activ].Caption then
begin
konteiner[activKon].Color:=Beta.Color;
konteiner[activKon].Font:=Beta.Font;
end; }
end;
procedure TForm1.ZetaDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if (Source as TPanel).Caption=(Sender as TPanel).Caption then
Begin
(Source as TPanel).Left:=(Sender as TPanel).Left;
(Source as TPanel).Top:=(Sender as TPanel).Top;
(Sender as TPanel).Font:= (Source as TPanel).Font;
(Sender as TPanel).Color:= (Source as TPanel).Color;
end else
Inc(Pomylke);
Caption:=IntToStr(Pomylke);
end;
procedure TForm1.ZetaDockDrop(Sender: TObject; Source: TDragDockObject; X,
Y: Integer);
begin
// (Source as TPanel).Left:=(Sender as TPanel).Left;
end;
procedure TForm1.LetBild;
var I,ix:integer;
// RandStr:utf8String; RandStr:=''; slivce slivce[i]
begin
EinWort.Clear;
Slivce:=hrdt.Text;
Created:= Length(slivce);
nonEmpty:=0;
for i:=1 to Length(hrdt.Text) do
if slivce[i]=' ' then
Abzug else // збільшення х-координати приймача slivce
begin
Inc(NonEmpty);
EinWort.Insert(Random(EinWort.Count - 1),hrdt.Text[i]);
Futlar('osk',i);
end;
nonEmpty:=0;
for I := 0 to EinWort.Count - 1 do
begin
Inc(NonEmpty);
MainCase(EinWort[i],i);
end; end;
{ hrdt.Text[i] try
// EinWort[i] MainCase(,); NonEmpty
Except
log1.Visible:=True;
EinWort.add( slivce[i]);
Log1.Items.Add('Except '+slivce[i]);
end; }
procedure TForm1.Abzug;
begin
xCor:=xCor+34;
end;
procedure TForm1.MainCase (c:Utf8string; n:integer);
begin
Letteren[n]:=TPanel.Create(self);
letteren[n].Parent:=Form1;
letteren[n].Name:='letter'+IntToStr(n);
if livac+30>RightBord then
NextRow;
Letteren[n].Left:=Livac;
Letteren[n].Top:=Wysoc;
Letteren[n].OnMouseDown:=Beta.OnMouseDown;
Letteren[n].OnMouseUp:=Beta.OnMouseUp;
Letteren[n].DragMode:=dmAutomatic;
Letteren[n].ParentColor:=False;
Letteren[n].Font:=hrdt.Font;
Letteren[n].ParentBackground:=False;
Letteren[n].width:=30;
Letteren[n].Height:=32;
Letteren[n].Caption:=EinWort[n];
Letteren[n].Color:=ClGreen;
R:=Letteren[n].ClientRect;
rgn := CreateRoundRectRgn(r.Left, r.top, r.right, r.bottom, 20, 20);
Letteren[n].BorderStyle := bsNone;
Letteren[n].Perform(EM_GETRECT, 0, lparam(@r));
InflateRect(r, -6, -6);
Letteren[n].Perform(EM_SETRECTNP, 0, lparam(@r));
SetWindowRgn( Letteren[n].Handle, rgn, true);
Livac:=Livac+34;
end;
код не менялся