Не уверен, но, скорей всего, проблема в колёсике мыши. У всех мышей разные колёсики, плюс разные настройки в системе, так что реальный щелчок колёсика при его вращении может вызывать сразу несколько событий MouseWheelUp/MouseWheelDown подряд.
Цитата (Александр5)
Как можно сделаить загрузку всех картинок в Draw grid используя Find first функции FindFirst,FindNext,FindClose я знаю но незнаю как организовать загрузку картинок в DrawGrid
Смотря какие картинки ты загружаешь. Предположим, ты хочешь загрузить все картинки с расширением *.bmp в папке images. Тогда тебе нужно задать строку '*.bmp' фильтром поиска и путь к папке 'images', а затем вызывать FindFirst, загрузить картинку, вызывать FindNext и загружать картинку, пока картинки не кончатся.
А зачем ты загружаешь картинки в DrawGrid? Это же вроде бы таблица с возможностью рисования. Лучше храни картинки в массиве битмапов или ImageList, а выводи их на канву image или формы. Если возникает мерцание - рекомендую почитать про функцию из WinAPI bitblt, если вручную вызывать (без всяких методов Canvas.Draw) - будет быстрее прорисовка; но прорисовывать нужно не напрямую в канвас, а в ещё один битмап, который, по сути, будет задним буфером, и только после окончательной прорисовки в заднем буфере можно копировать картинку на видимый канвас.
Сообщение отредактировал TimKruz - Среда, 06 Марта 2013, 20:29
Не уверен, но, скорей всего, проблема в колёсике мыши. У всех мышей разные колёсики, плюс разные настройки в системе, так что реальный щелчок колёсика при его вращении может вызывать сразу несколько событий MouseWheelUp/MouseWheelDown подряд.
И как это можно исправить
Смотря какие картинки ты загружаешь. Предположим, ты хочешь загрузить все картинки с расширением *.bmp в папке images. Тогда тебе нужно задать строку '*.bmp' фильтром поиска и путь к папке 'images', а затем вызывать FindFirst, загрузить картинку, вызывать FindNext и загружать картинку, пока картинки не кончатся.
но как сделать как загрузить в драв грид
Добавлено (06.03.2013, 22:13) --------------------------------------------- Слушайте как можно в процедуре
procedure TForm1.MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin Form1.Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'Bitmaps_Png\'+list.Strings[krt]); Form1.Edit2.Text:=list.Strings[krt]+' : '+inttostr(krt); end;
А разве не WheelDelta не будет содержать число прокруток
Добавлено (07.03.2013, 00:18) --------------------------------------------- Скиньте мне паскаль скрипт на Delphi 5 и 7 Как установить Паскаль скрипт на Delphi 5 и 7
Добавлено (08.03.2013, 19:42) --------------------------------------------- Скажите какую формулу мне использовать для прокрутки картинок.
Эта не подходит.
Код
procedure TForm1.MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin If MBoolean = MDOWN then begin If krt > 0 then begin krt := krt - 1; end; Form1.Edit1.Text:='Вверх'; end; If MBoolean = MUP then begin if krt < krg -1 then begin krt := krt + 1; end; Form1.Edit1.Text:='Ввниз'; end; Form1.Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'Bitmaps_Png\'+list.Strings[krt]); Form1.Edit2.Text:=list.Strings[krt]+' : '+inttostr(krt); end;
procedure TForm1.MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin MBoolean:=MDOWN; end;
procedure TForm1.MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin MBoolean:=MUP; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Form1.OnMouseWheel:=nil; Form1.OnMouseWheelDown:=nil; Form1.OnMouseWheelUp:=nil; Application.Terminate; end;
procedure TForm1.Button2Click(Sender: TObject); begin Form1.OnMouseWheel:=nil; Form1.OnMouseWheelDown:=nil; Form1.OnMouseWheelUp:=nil; Application.Terminate; end;
// обработка прокрутки колеса вверх procedure MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); public { Public declarations } end; Type TMboolean = (MDOWN,MUP); var Form1: TForm1; DStream:TDStream; i,o,p:Integer; IM1:Integer; IM2:Integer; cs,str1,lki:string; KX,KY,JX,JY:Integer; lk:Word;{Переменная которая будет хранить код картинки} files:TextFile; krt,krg:integer; Bmp_Image:array of string; fs:TSearchRec; list:TStringList; MBoolean:TMboolean; implementation
{$R *.DFM} procedure TForm1.Create_Maps_btnClick(Sender: TObject); begin i := StrToInt(InputBox('Введите число ячеек','Ввод числа ячеек','32')); if i >= 20 then begin DStream.InputStream:=TMemoryStream.Create; AssignFile(files,ExtractFilePath(Application.ExeName)+'Maps_Bin.bin'); ReWrite(files); CloseFile(files); o:=i*50; Form1.Maps1.Height:=o; Form1.Maps1.Width:=o; Form1.Mini_Map_scrl1.Visible:=True; SetLength(DStream.Maps_Cells,i,i); DStream.InputStream.Free; end else begin AllocConsole; cs:='\\Извините число должно быть больше 20. Введите число ячеек'; CharToOEM (PChar(cs), PChar(cs)); Writeln(cs); readln; repeat lki:='Извините. Но для закрытия консольного приложения нужно ввести Close'; CharToOEM (PChar(lki), PChar(lki)); Writeln(lki); readln(str1); until AnsiUpperCase(str1) = 'CLOSE'; FreeConsole; end; end;
procedure TForm1.N1Click(Sender: TObject); begin Memo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'Информация.txt'); end;
procedure TForm1.Maps1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin KX:= X div 50; KY:= Y div 50; Form1.MX1Y1X2Y2_lbl.Caption:='X = '+inttostr(KX)+':'+ 'Y = ' + inttostr(KY); DStream.Maps_Cells[KX,KY]:=krt;
end;
procedure TForm1.FormCreate(Sender: TObject); begin list:=TStringList.Create; if FindFirst(ExtractFilePath(Application.ExeName)+'Bitmaps_Png\'+'*.bmp',faAnyFile-faDirectory-faVolumeID, fs)=0 then begin repeat inc(krg); list.Add(fs.Name); until FindNext(fs)<>0; findclose(fs); end; Form1.OnMouseWheel:=MouseWheel; Form1.OnMouseWheelDown:=MouseWheelDown; Form1.OnMouseWheelUp:=MouseWheelUp; Form1.AutoSize:=True; end;
procedure TForm1.MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin If MBoolean = MDOWN then begin If krt > 0 then begin krt := krt - 1; end; Form1.Edit1.Text:='Ввниз'; end; If MBoolean = MUP then begin if krt < krg -1 then begin krt := krt + 1; end; Form1.Edit1.Text:='Вверх'; end; Form1.Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'Bitmaps_Png\'+list.Strings[krt]); Form1.Edit2.Text:=list.Strings[krt]+' : '+inttostr(krt); end;
procedure TForm1.MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin MBoolean:=MDOWN; end;
procedure TForm1.MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin MBoolean:=MUP; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Form1.OnMouseWheel:=nil; Form1.OnMouseWheelDown:=nil; Form1.OnMouseWheelUp:=nil; Application.Terminate; end;
procedure TForm1.Button2Click(Sender: TObject); begin Form1.OnMouseWheel:=nil; Form1.OnMouseWheelDown:=nil; Form1.OnMouseWheelUp:=nil; Application.Terminate; end;
Добавлено (10.03.2013, 17:58) --------------------------------------------- Как можно на имадже отрисовать картинку в орпеределенных координатах и стереть ее
Как можно на имадже отрисовать картинку в орпеределенных координатах и стереть ее
Можно сохранить предыдущее состояние канвы image в буфере, нарисовать на ней картинку, а потом восстановить предыдущее состояние канвы из буфера. Можно сохранять не всю канву, а только тот участок, который будет перекрыт картинкой - так экономичнее по памяти. Можно нарисовать всё, потом нарисовать картинку, а затем залить всё одним фоном (нарисовать просто прямоугольник) и нарисовать всё снова, но не рисовать картинку.
Как конкретно рисовать - я уже писал. Через процедуру draw канваса или функцию WinAPI bitblt.
Сообщение отредактировал TimKruz - Воскресенье, 10 Марта 2013, 22:43
// îáðàáîòêà ïðîêðóòêè êîëåñà ââåðõ procedure MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); public { Public declarations } end; type TKBoolean = (Create_Map,Delete_Map); Type TMboolean = (MDOWN,MUP); type TSetka = (SCreate,SClear); function FMaps(X:Integer;Y:Integer):Boolean; var Form1: TForm1; i,o,p:Integer;//Ïåðåìåííûå äëÿ ðàáîòû ñ ÿ÷åéêàìè(Ñîçäàíèå ôàéëà) cs,str1,lki:string;//Äëÿ êîíñîëÿ KX,KY,JX,JY:Integer;//Ðàáîòà ñ ÿ÷åéêàìè(Îòðèñîâêà) lk:Word;{Ïåðåìåííàÿ êîòîðàÿ áóäåò õðàíèòü êîä êàðòèíêè} files,files1:TextFile;//Ïåðåìåííàÿ ôàéëâ äëÿ ñîçäàíèå ôàéëà êàðòû krt:Double;{Ïåðåìåííàÿ äëÿ ðàáîòû ñ êîëåñèêîì! Òîæå ñàìîå} krg:Integer; fs:TSearchRec;//Çàãðóçêàê êàðòèíîê ïðè ñîçäàíèè ôîðìû list:TStringList;//Äëÿ õðàíåíèÿ èìåí êàðòèíîê MBoolean:TMboolean;//Ñîáñòâåííûé òèï Type TMboolean = (MDOWN,MUP); äëÿ îïðåäåëèíÿÿ â êàêîì íàïðàâëåíèè êðóòèòüñÿ êîëåñèêà KBoolean:TKBoolean;//Ñîáñòâåííûé òèï type TKBoolean = (Create_Map,Delete_Map); äëÿ îïðåäåëåíèÿ ðèñîâàòü òàéë â îáëîñòè êàðòû èëè óäàëÿòü Setka:TSetka;//Ñîáñòâåííûé òèï type TSetka = (SCreate,SClear); â áóäóùåì áóäåò èñïîëüçîâàòüñÿ äëÿ îïðåäåëåíèÿ áóäåò ëè ïîêàçûâàòüñÿ ñåòêà èëè íåò i1,i2:Integer;//Ðàáîòà äëÿ ñîçäàíèè îáëàñòè êàðòû BIT_White:TBitmap;//Ïåðåìåííàÿ êîòîðàÿ áóäåò õðàíèòü ïåðâîíà÷àëüíóþ êàðòèíêó â îáëîñòè êàðòû MK1,MK2,MK3,MK4,MK5,MK6:Integer;//èñïîëüçóåòñÿ äëÿ ñîõðàíåíèÿ êàðòû è çàãðóçêè ilkin:Integer;//Èñïîëüçóåòñÿ äëÿ îïðåäåëåíèÿ ñêîëüêî êàðò âñåãî íàõîäèòñÿ â ïàïêå Load_Maps:TBITMAP; IKLI1,IKLI2:Integer;//Ïåðåìåííàÿ äëÿ îïðåäåëåíèÿ Êîîëè÷åñòâî ÿ÷ååê inil: TIniFile; implementation
{$R *.DFM} function FMaps(X:Integer;Y:Integer):Boolean; begin KX:= X div 50; KY:= Y div 50; Form1.MX1Y1X2Y2_lbl.Caption:='X = '+inttostr(KX)+':'+ 'Y = ' + inttostr(KY); Maps_Cells[KX,KY].MPath:=list.Strings[Trunc(krt)]; Maps_Cells[KX,KY].X:=KX; Maps_Cells[KX,KY].Y:=KX; FMaps:=True; end; procedure TForm1.Create_Maps_btnClick(Sender: TObject); begin i := StrToInt(InputBox('Ââåäèòå ÷èñëî ÿ÷ååê','Ââîä ÷èñëà ÿ÷ååê','32')); if i >= 10 then begin o:=i*50; Form1.Maps1.AutoSize:=False; Form1.Mini_Map_scrl1.Visible:=True; Form1.Maps1.Height:=o; Form1.Maps1.Width:=o; Form1.Maps1.Canvas.Pen.Color:=clRed; Form1.Maps1.Canvas.pen.Width:=0; SetLength(Maps_Cells, (Form1.Maps1.Height div 50), (Form1.Maps1.Width div 50)); for i1:=0 to i do for i2:=0 to i do begin Form1.Maps1.Canvas.Rectangle(i1*50,i2*50,i1*50+50,i2*50+50); end; end else begin AllocConsole; cs:='\\Èçâèíèòå ÷èñëî äîëæíî áûòü áîëüøå 10. Ââåäèòå ÷èñëî ÿ÷ååê'; CharToOEM (PChar(cs), PChar(cs)); Writeln(cs); readln; repeat lki:='Èçâèíèòå. Íî äëÿ çàêðûòèÿ êîíñîëüíîãî ïðèëîæåíèÿ íóæíî ââåñòè Close'; CharToOEM (PChar(lki), PChar(lki)); Writeln(lki); readln(str1); until AnsiUpperCase(str1) = 'CLOSE'; FreeConsole; end; end;
procedure TForm1.N1Click(Sender: TObject); begin Memo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'Èíôîðìàöèÿ.txt'); end;
procedure TForm1.Maps1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin If Button = mbleft then begin If KBoolean = Create_Map then begin If FMaps(X,Y) = True then begin Maps1.Canvas.Draw(KX*50,KY*50,Image1.Picture.Bitmap); Memo2.Items.Add('Êàðòèíêà ñ ÿ÷åéêàìè X = '+INTTOSTR(KX)+' , Y = '+INTTOSTR(KY)+' , Çàïèñàëàñü óñïåøíî. Èìÿ êàðòèíêè = '+list.strings[Trunc(krt)]); end; end; If KBoolean = Delete_Map then begin If FMaps(X,Y) = True then begin Maps1.Canvas.Draw(KX*50,KY*50,BIT_White); Memo2.Items.Add('Êàðòèíêà ñ ÿ÷åéêàìè X = '+INTTOSTR(KX)+' , Y = '+INTTOSTR(KY)+' , Çàïèñàëàñü óñïåøíî. Èìÿ êàðòèíêè = '+list.strings[Trunc(krt)]); end; end; end; end;
procedure TForm1.FormCreate(Sender: TObject); begin list:=TStringList.Create; if FindFirst(ExtractFilePath(Application.ExeName)+'Bitmaps_Png\'+'*.bmp',faAnyFile-faDirectory-faVolumeID, fs)=0 then begin repeat inc(krg); list.Add(fs.Name); until FindNext(fs)<>0; findclose(fs); end; if FindFirst(ExtractFilePath(Application.ExeName)+'Maps\'+'*.binMap',faAnyFile-faDirectory-faVolumeID, fs)=0 then begin repeat inc(ilkin); until FindNext(fs)<>0; findclose(fs); Button1.Enabled:=True; end; Form1.OnMouseWheel:=MouseWheel; Form1.OnMouseWheelDown:=MouseWheelDown; Form1.OnMouseWheelUp:=MouseWheelUp; Form1.AutoSize:=True; krt:=0; Edit1.text:='Ñòîèò'; Form1.Edit2.Text:=list.Strings[Trunc(krt)]+' : '+inttostr(Trunc(krt)); BIT_White:=TBitmap.Create; end;
procedure TForm1.MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin if KBoolean = Create_Map then begin If MBoolean = MDOWN then begin If krt > 0 then begin krt := krt - 0.5; end; Form1.Edit1.Text:='Êðóòèòñÿ Ââíèç'; end; If MBoolean = MUP then begin if krt < krg -1 then begin krt := krt + 0.5; end; Form1.Edit1.Text:='Êðóòèòñÿ Ââåðõ'; end; Form1.Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'Bitmaps_Png\'+list.Strings[Trunc(krt)]); Form1.Edit2.Text:=list.Strings[Trunc(krt)]+' : '+inttostr(Trunc(krt)); end; end; procedure TForm1.MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin if KBoolean = Create_Map then begin MBoolean:=MDOWN; end; end;
procedure TForm1.MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin if KBoolean = Create_Map then begin MBoolean:=MUP; end; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Form1.OnMouseWheel:=nil; Form1.OnMouseWheelDown:=nil; Form1.OnMouseWheelUp:=nil; Application.Terminate; end;
procedure TForm1.Image1Click(Sender: TObject); begin Panel1.BorderStyle:=bsSingle; Panel2.BorderStyle:=bsNone; KBoolean:=Create_Map; end;
procedure TForm1.Image2Click(Sender: TObject); begin Panel2.BorderStyle:=bsSingle; Panel1.BorderStyle:=bsNone; KBoolean:=Delete_Map; end;
procedure TForm1.N2Click(Sender: TObject); var strini:string; begin ilkin:=ilkin+1; strini:=InputBox('Ââîä èìåíè êàðòû.','Ââåäèòå èìÿ êàðòû','Drionko'); AssignFile(files,ExtractFilePath(Application.ExeName)+'Maps\'+inttostr(ilkin)+strini+'.binMap'); rewrite(files); Append(files); for MK1 := 0 to (Maps1.Height div 50 - 1) do for MK2 := 0 to (Maps1.Width div 50 - 1) do begin Writeln(files,Maps_Cells[MK1,MK2].MPath); Writeln(files,Maps_Cells[MK1,MK2].X); Writeln(files,Maps_Cells[MK1,MK2].Y); end; IKLI1:=MK1; IKLI2:=MK2; inil:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Maps\'+inttostr(ilkin)+'Maps.ini'); inil.WriteInteger('Ïåðåìåííàÿ Ìàêñ ÿ÷ååê','1',IKLI1); inil.WriteInteger('Ïåðåìåííàÿ Ìàêñ ÿ÷ååê','2',IKLI2); Memo2.Items.Add('Ìàêñèìàëüíîå ÷èñëî ÿ÷ååê X = '+inttostr(IKLI1)+' , Y = '+inttostr(IKLI2)); closefile(files); end;
end.
Нужно сделать загрузку по томуже типу как сделана запись только
загрузку нужно делать используя OpenDialog1
в Ini файлах будет храниться максимальное число ячеек начиная с 1 но в загрузки будет начинаться с 0 так что нужно будет отнимать 1
можете ответить мне на этих 2 вопроса
Добавлено (20.03.2013, 13:17) --------------------------------------------- Ктонибудь скажите где находятся функции VarArrayGet и VarArrayPut
при установки паскаль скриптна Delphi 5 вот тут ошибки
function _VarArrayGet(var S : Variant; I : Integer) : Variant; begin result := VarArrayGet(S, [I]); end;
procedure _VarArraySet(const c : Variant; I : Integer; var s : Variant); begin VarArrayPut(s, c, [i]); end;
Вот ошибки
[Error] uPSRuntime.pas(9251): Undeclared identifier: 'VarArrayGet' [Error] uPSRuntime.pas(9256): Undeclared identifier: 'VarArrayPut' [Fatal Error] uPSComponent.pas(6): Could not compile used unit 'uPSRuntime.pas'
Помогите пожалуйста
Добавлено (28.03.2013, 10:14) --------------------------------------------- Прошу вас помогите мне разобраться что должно быть в файле персонажа кроме жизней патронов оружия имя картинки имя персонажа
Добавлено (08.04.2013, 14:29) --------------------------------------------- Раскажите мне про Длл и можно ли там хранить рекорды с переменнами а также может ли длл содержать форму. Также скажите можно ли поменять расширение у Dll
{ Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your project's (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL--even those that are nested in records and classes. ShareMem is the interface unit to the BORLNDMM.DLL shared memory manager, which must be deployed along with your DLL. To avoid using BORLNDMM.DLL, pass string information using PChar or ShortString parameters. }
Function CreateLefels(AddNamePlayer:String;AddNameEnemy:String;AddPurpose:TPurpose1; AddLefelsGamesPingPong:Integer;Path:String;AddWBOACDAB:Boolean;AddWBOACDABInt:Integer; AddTextLefelsColor:String):Boolean; var DataPingPongGames:TDataPingPongGames; FileDataPingPongGames:File of TDataPingPongGames; begin DataPingPongGames.NamePlayer:=AddNamePlayer; DataPingPongGames.NameEnemy:=AddNameEnemy; DataPingPongGames.LefelsGamesPingPong:=AddLefelsGamesPingPong; DataPingPongGames.Purpose1:=AddPurpose; DataPingPongGames.WBOACDAB:=AddWBOACDAB; DataPingPongGames.WBOACDABInt:=AddWBOACDABInt; DataPingPongGames.TextLefelsColor:=AddTextLefelsColor; assignfile(FileDataPingPongGames,Path); rewrite(FileDataPingPongGames); write(FileDataPingPongGames,DataPingPongGames); closefile(FileDataPingPongGames); end;
Function LoadLefels(Path:String):Boolean; var DataPingPongGames:TDataPingPongGames; FileDataPingPongGames:File of TDataPingPongGames; begin assignfile(FileDataPingPongGames,Path); {$i-} reset(FileDataPingPongGames); {$i+} read(FileDataPingPongGames,DataPingPongGames); closefile(FileDataPingPongGames); end;
Function SaveLefels(Path:String;SaveXCircle:Integer;SaveYCircle:Integer):Boolean; var DataPingPongGames:TDataPingPongGames; FileDataPingPongGames:File of TDataPingPongGames; begin DataPingPongGames.XCircle:=SaveXCircle; DataPingPongGames.YCircle:=SaveYCircle; assignfile(FileDataPingPongGames,Path); rewrite(FileDataPingPongGames); write(FileDataPingPongGames,DataPingPongGames); closefile(FileDataPingPongGames); end; var DataPingPongGamesDll:TDataPingPongGames; exports CreateLefels,SaveLefels,LoadLefels,DataPingPongGamesDll; begin end.
Правильно ли я сделал длл с рекордом
Сообщение отредактировал Александр5 - Понедельник, 08 Апреля 2013, 16:15
DLL - Dynamic Link Library (динамически подключаемая библиотека) - это такой модуль программы, работающий как программа, но не запускаемый непосредственно, а подключаемый к какой-нибудь программе, при этом программа может вызывать функции этого модуля. Можно подключать автоматически при запуске программы, а можно только тогда, когда этот модуль действительно нужен. DLL может содержать любые структуры данных, процедуры и функции, классы. DLL может использоваться как контейнер для ресурсов, в том числе форм окон. В целом, DLL - это как программа, только не самостоятельная. Ещё плюс DLL в том, что её код загружается в память один раз, а использоваться может одновременно в нескольких программах.
Цитата (Александр5)
Также скажите можно ли поменять расширение у Dll
Можно, но обычно не требуется. DLL обычно загружается динамически функцией из WinAPI - LoadLibrary('имя библиотеки'). В качестве входного параметра используется имя библиотеки (указатель на первый символ строки типа PChar или строка-константа), которое может быть любым, хоть 'lib.dll', хоть 'game.data' или 'blablabla'.
Цитата (Александр5)
Правильно ли я сделал длл с рекордом
Вроде бы правильно. Попробуй скомпилировать и загрузить из программы. Пробуй, экспериментируй, читай мануалы...
Вроде бы правильно. Попробуй скомпилировать и загрузить из программы. Пробуй, экспериментируй, читай мануалы...
Если бы знать как
Добавлено (12.04.2013, 13:27) --------------------------------------------- Скажите какой запрещенный цвет шрифта выбрать которым бы нельзя было пользоваться может clBtnFace
просто если цвет шрифта будет такой же как цвет прозрачности то текст не будет видно. Я использую 2 формы и TransparentColor
Добавлено (14.04.2013, 17:03) --------------------------------------------- Скажите как сделать поиск файла по всему диску именно файла
procedure TForm1.FormCreate(Sender: TObject); var SR1,SR2,SR3 : TSearchRec; begin IniFilesLibx:=TIniFile.Create(ApplicationPath(2)+'LibxEdit.ini'); if FindFirst(ApplicationPath(2)+'LibxEditFiles\Lang\rus.data', faAnyFile, SR1) = 0 then begin repeat NL1.Visible:=True; until FindNext(SR1) <> 0; end;
if FindFirst(ApplicationPath(2)+'LibxEditFiles\Lang\rus.data', faAnyFile, SR1) <> 0 then begin repeat ShowMessage('Русский перевод необходим для запуска убедитесь что русский язык есть Ошибка 0 не найден файл rus.data'); Application.Terminate; until FindNext(SR1) <> 0; end; if FindFirst(ApplicationPath(2)+'LibxEditFiles\Lang\eng.data', faAnyFile, SR2) = 0 then begin repeat NL2.Enabled:=True; until FindNext(SR2) <> 0; end; if FindFirst(ApplicationPath(2)+'LibxEditFiles\Lang\eng.data', faAnyFile, SR2) <> 0 then begin repeat NL2.Enabled:=False; until FindNext(SR2) <> 0; end; FindClose(SR1); FindClose(SR2); end;
Вот это не работает NL2.Enabled:=False;
NL1.Visible:=True;
Компонент MenuBar
Пишу код на XE3 в библиотеки Fire Monkey Metropolis UI Application
И еще просьба сказать как запускать в других ОС эти проги я слышал что можно там только это и пишут про XE3
Добавлено (26.04.2013, 09:29) --------------------------------------------- С этим разобрался но вот как програмно иконку сменить в Firemonkey если в Application нету Icon
Добавлено (27.04.2013, 09:50) --------------------------------------------- Скажите пожалуйста и срочно как вызвать диалог выбора папки в FireMonkey или есть может у кого компонент для FireMonkey буду очень благодарен
Добавлено (30.04.2013, 13:27) --------------------------------------------- В XE3 нашел компонент FastScript
Скажите что за скриптовой движок и как на нем работать
type TForm1 = class(TForm) MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N10: TMenuItem; N11: TMenuItem; N12: TMenuItem; N13: TMenuItem; OpenPictureDialog1: TOpenPictureDialog; procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure N1Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; Type PRList=^RList; RList=Record Inf:String; Link:PRList; End; TGameRead=class(TThread) // класс для таймера игры private protected procedure Execute;override; // Запуск procedure Tic; // Один тик программы end; var Form1: TForm1; ActivMenu:Boolean; ActivByte:Byte; {Png Image Maps Save} Buffer,Flur:TPngImage; LEFT1,TOP1,WIDTH1,HEIGHT1:Array[0..100] of Integer; GameRead:TGameRead; implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin Buffer:=TPngimage.Create; Flur:=TPngImage.Create; GameRead:=TGameRead.Create(False); GameRead.Priority:=TpHighest; end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key = 122)And(ActivMenu = true)and(ActivByte = 0) then begin ActivByte:=1; ActivMenu:=False; Form1.Menu:=Nil; end; if (Key = 122)And(ActivMenu = true)and(ActivByte = 1) then begin ActivByte:=0; ActivMenu:=False; Form1.Menu:=Form1.MainMenu1; end; end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = 122 then begin ActivMenu:=True; end; end;
procedure TForm1.N1Click(Sender: TObject); begin Application.Terminate; end;
procedure TForm1.N3Click(Sender: TObject); begin if OpenPictureDialog1.Execute then begin
procedure TGameRead.Execute; begin repeat synchronize(Tic); until Terminated
end;
procedure TGameRead.Tic; begin BitBlt(Buffer.Canvas.Handle,LEFT1[0],TOP1[0],LEFT1[0]+WIDTH1[0],TOP1[0]+HEIGHT1[0],Flur.Canvas.Handle,0,0,SRCCOPY); BitBlt(Form1.Canvas.Handle,LEFT1[0],TOP1[0],LEFT1[0]+WIDTH1[0],TOP1[0]+HEIGHT1[0],Buffer.Canvas.Handle,0,0,SRCCOPY); end;
end.
Слушайте в чем ошибка почему картинки не выводится пишу в XE3
Если нажать f4 то вот ошибка
Добавлено (06.05.2013, 14:39) --------------------------------------------- есть вообще другой путь вывода графики на форму в определенных координатами
если делать так Form1.Canvas.Draw(X1,Y1,Flur); а потом стирать канву этот способ не подойдет
Это быдла код а не код мне нужно выводить спрайты PNG на форму в определенных координатах тогда и передвигать спрайты можно будет может посоветуете движок но чтобы на XE3 работало пожалуйста ответте лучше конечно как это сделать самому
Добавлено (09.05.2013, 17:19) --------------------------------------------- Как в DXImageList добавить сразу много изображений библиотека DelphiX
Pen.Width:=1; Brush.Color:=clGreen; Rectangle(1,1,299,299); for I := 0 to 9 do for j := 0 to 9 do Rectangle((i+0)*30,300-(j+0)*30,(i+1)*30,300-(j+1)*30); Brush.Color:=clRed; Pen.Width:=1; // for I := 1 to 12 do Rectangle((Боец[i].X)*30+Боец[i].mX,(Боец[i].Y)*30+Боец[i].mY,(Боец[i].X)*30+Боец[i].mX+4,(Боец[i].Y)*30+Боец[i].mY+4);
for I := 1 to 12 do if (Боец[i].Состояние='Жив') then Rectangle((Боец[i].X)*30+Боец[i].mX,(Боец[i].Y)*30+Боец[i].mY,(Боец[i].X)*30+Боец[i].mX+4,(Боец[i].Y)*30+Боец[i].mY+4);
end; end
Простейший способ канваса, мини карта можно сказать, я правда канвас не люблю, мне опен гл удобнее(и на нем в разы проще выводить спрайты) Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2)