Приветствую Вас, Вадим! Вот, держите: http://www.download.ru/russian/sp/14758.htm?cc Ответ отправлен: 02.03.2004, 13:38 Отправитель: samum2000 Отвечает sir henry
Приветствую Вас, Вадим! На www.delphimaster.ru был специальный компонент для этой цели. К сожалению не могу указать точный адрес, т.к. этот сервер мне сейчас не отвечает. Ответ отправлен: 01.03.2004, 12:20 Отправитель: sir henry Отвечает Pawel
Доброе время суток, Вадим! посмотри тут http://www.delphikingdom.ru/ или тут www.sources.ru/ Ответ отправлен: 01.03.2004, 15:24 Отправитель: Pawel
Вопрос № 1371
Недавно начал изучать Дельфи, но столкнулся с проблемой, что множество документации идет под СИ или Визуал СИ. Помогите пожалуйста перевести приложенный исходник на Дельфи. И может кто поможет с хорошей книгой по Дельфи в электронном виде.
Приветствую Вас, Александр! У меня есть богатая коллекция литературы и исходников по Delphi, если нужно дава свой e-mail Ответ отправлен: 01.03.2004, 15:14 Отправитель: Pawel Отвечает sir henry
Приветствую Вас, Александр! Будет примерно тоже самое. См. приложение. Статические переменные объявляются в глобальной области. В исходниках (в основнов в Windows.pas) нужно смотреть, как и с какими параметрами вызывается та или иная функция WinAPI, т.к. есть некоторое расхождение в объявлении типов и передаче параметров между Си и Дельфи.
Приложение: Ответ отправлен: 01.03.2004, 12:56 Отправитель: sir henry Отвечает Boriss
Добрый день, Александр! В примере описана работа Выньдов "внутри". Delphi все эти сложности скрывает (в этом идея объектно-ориентированного программирования). Здесь достаточно для формы обрабатыывать событие OnPaint. После двойного щелчка создается процедура, в которой пишешь просто: Canvas.Ellipse(x-5, y-5, x+5, y+5); Ответ отправлен: 02.03.2004, 13:59 Отправитель: Boriss
Вопрос № 1372
Здравствуйте. В Delphi-среде я пишу на WinAPI и хочу запихнуть wav-файл в ресурсный файл (*.res или *.rc), что бы затем прилинковать к exe-шнику. А вот как это сделать ума не приложу. Вот,например, в ImageEditor можно иконки,рисунки поместить в ресурсный файл. Есть ли такая программа вообще для любых типов ресурсов, а не только для рисунков? Спасибо.
Доброе время суток, nkid! в составе delphi есть Brcc32.exe - компилятор ресурсов. Ответ отправлен: 01.03.2004, 15:10 Отправитель: Pawel Отвечает samum2000
Добрый день, nkid! Сначала создаешь файл *.rc, примерно с таким содержанием: CLICK1 WAVE CLICK.WAV BUTTDOWN WAVE BD.WAV MYWAVE WAVE MYWAVe.WAV (т.е. название_ресурса WAVE Имя_файла_с_ресурсом). Потом запускаешь программу BRCC32.EXE (лежит в Delphiin) и в качестве параметра передаете ей имя вашего *.rc. Можно просто создать create.bat с содержанием BRCC32.EXE mywaveres.rc и запустить его. Ответ отправлен: 02.03.2004, 13:32 Отправитель: samum2000 Отвечает Bob Johnson
Доброе время суток, nkid! Можно создать скрипт ресурсов (.rc): 1 WAVE "MyWav.wav" откомпилировать его компилятором ресурсов (brc, например) - получится .res файл. А уже этот .res файл можно подключить к программе в дельфи.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 02.03.2004, 10:43 Отправитель: Bob Johnson Отвечает THE_PRO
Здравствуйте, nkid! Ona yest(ix mnoqo)! Dlya delphi(na diske delphi) eto "Resource Workshop" Ответ отправлен: 01.03.2004, 14:48 Отправитель: THE_PRO Отвечает Snowm@n
Приветствую Вас, nkid! В файл MyWave.rc пишешь: MyWave RCDATA LOADONCALL MyWave.wav Затем: brcc32.exe MyWave.rc, получаешь MyWave.res. В своей программе пишешь: {$R MyWave.res} Все просто!
Ответ отправлен: 01.03.2004, 20:12 Отправитель: Snowm@n
Вопрос № 1373
Здравствуйте, все! Написал вот такое произведение (см.прил), а оно не работает. Помогите, плиз, исправить ошибки. Дайте пожалуйста ссылочку на хорошую книгу по Дельфи (желательно в электр виде).
Здравствуйте, Александр! 1. procedure TForm1.Button1Click(Sender: TObject); var NewSel: TGridRect; begin with StringGrid1 do begin NewSel.Left := FixedCols; NewSel.Top := FixedRows; NewSel.Right := ColCount - 1; NewSel.Bottom := FixedRows; Selection := NewSel; end; end; или так StringGrid1.Row := YourRowNumber; StringGrid1.TopRow := YourFirstVisibleRow; StringGrid1.LeftCol := YourFirstVisibleColumn;
2. Руками: procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); const SelectedColor = Clblue; begin if (state = [gdSelected]) then with TStringGrid(Sender), Canvas do begin Brush.Color := SelectedColor; FillRect(Rect); TextRect(Rect, Rect.Left + 2, Rect.Top
+ 2, Cells[aCol, aRow]); end; end;
3. См. приложение.
TForm1 = class(TForm) StringGrid1: TStringGrid; procedure StringGrid1MouseMove(Sender: TObject;Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); private {Private declarations} Col1 : integer; Row1 : integer; public {Public declarations} end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin StringGrid1.Hint := '0 0'; StringGrid1.ShowHint := True; end; procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var r: integer; c: integer; begin StringGrid1.MouseToCell(X, Y, C, R); with StringGrid1 do begin if ((Row <> r) or(Col <> c)) then begin Row1 := r; Col1 := c;
Application.CancelHint; StringGrid1.Hint :=IntToStr(r)+#32+IntToStr(c); end; end; end; Ответ отправлен: 02.03.2004, 13:33 Отправитель: samum2000 Отвечает sir henry
Добрый день, Александр! Если Вы хотите пользоваться графикой WinAPI именно так, то перепешите тело процедуры таким образом: {Получить контекст окна} MyHDC := GetWindowDC(form1.Handle); {Нарисовать на контексте эллипс} Ellipse(MyHDC, 75, 75, 125, 125); {Удалить контекст} ReleaseDC(form1.Handle, MyDC); После каждого цикла рисования контекст нужно удалять, поскольку эта штука кушает дополнительные рисурсы. В этом контексте могут создаваться карандаши, кисти, шрифты и т.п. вещи. Ответ отправлен: 02.03.2004, 10:28 Отправитель: sir henry Отвечает Bob Johnson
Добрый день, Александр! BeginPaint и EndPaint можно вызывать только из обработчика WM_PAINT. Тебе же хватило бы GetDC, ReleaseDC.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 02.03.2004, 10:42 Отправитель: Bob Johnson Отвечает Pawel
Приветствую Вас, Александр! Вместо MyHDC := BeginPaint(form1.Handle, ps); пишите MyHDC:=GetDC(Form1.Handle); Есть неплохая книга в chm Kuliba2000 Ответ отправлен: 01.03.2004, 16:13 Отправитель: Pawel Отвечает Boriss
Приветствую Вас, Александр! В Делфях достаточно: procedure TForm1.Button1Click(Sender: TObject); Begin Canvas.Ellipse(75, 75, 125, 125); end;
Ответ отправлен: 02.03.2004, 14:02 Отправитель: Boriss
Вопрос № 1375
Здравствуйте эксперты ! Помогите плз. Появились 3 вопрса по StringGridу: 1) как переместить курсор-рамку, или как его там, в нужную мне ячейку из программы ? 2) как этот самый курсор-рамку сделать потолще или другого цвета, а то его плохо видно ? 3) как сделать Hint для каждой ячейки ? Дельфи 3. Заранее спасибо.
Добрый день, Радик! StringGrid1.GridLineWidth:=4; А цвет не успеваю найти. Наниши, если действительно нужно, еще раз
Ответ отправлен: 04.03.2004, 14:02 Отправитель: Boriss Отвечает Pawel
Приветствую Вас, Радик! 2) В ручную нарисовать :)! или написать свой компонент, или найти чужой. 3)Смотришь координаты курсора и в соответствии с ними выводишь хинт. 1) см.п1 Ответ отправлен: 02.03.2004, 16:11 Отправитель: Pawel Отвечает samum2000
Доброе время суток, Радик! 1. procedure TForm1.Button1Click(Sender: TObject); var NewSel: TGridRect; begin with StringGrid1 do begin NewSel.Left := FixedCols; NewSel.Top := FixedRows; NewSel.Right := ColCount - 1; NewSel.Bottom := FixedRows; Selection := NewSel; end; end; или так StringGrid1.Row := YourRowNumber; StringGrid1.TopRow := YourFirstVisibleRow; StringGrid1.LeftCol := YourFirstVisibleColumn;
2. Руками: procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); const SelectedColor = Clblue; begin if (state = [gdSelected]) then with TStringGrid(Sender), Canvas do begin Brush.Color := SelectedColor; FillRect(Rect); TextRect(Rect, Rect.Left + 2,
Rect.Top + 2, Cells[aCol, aRow]); end; end;
3. См. приложение.
TForm1 = class(TForm) StringGrid1: TStringGrid; procedure StringGrid1MouseMove(Sender: TObject;Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); private {Private declarations} Col1 : integer; Row1 : integer; public {Public declarations} end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin StringGrid1.Hint := '0 0'; StringGrid1.ShowHint := True; end; procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var r: integer; c: integer; begin StringGrid1.MouseToCell(X, Y, C, R); with StringGrid1 do begin if ((Row <> r) or(Col <> c)) then begin Row1 := r; Col1
:= c; Application.CancelHint; StringGrid1.Hint :=IntToStr(r)+#32+IntToStr(c); end; end; end; Ответ отправлен: 03.03.2004, 12:02 Отправитель: samum2000
Вопрос № 1377
Здравствуйте уважаемые эксперты. Помогите решить вот такую проблему. Необходимо запустить ДОСовское приложение в Windows один раз. Один раз запускаю, и ДОСовское приложение запускаю WinExec(PChar('C:WINDOWSРабочий столСведения в пенсионный фонд.pif'),SW_ShowMaximized); Но как закрыть форму, из которой запущено приложение. Вернее как узнать, что ДОСовское приложение закончило работу?
Доброе время суток, В.Иванов! WinExec() или ShellExecute. У второй больше возможностей. CreateProcess() в параметре process info возвращает handle запущенного процесса. Вот и делаешь WaitForSingleObject(pi.hProcess, INFINITE); Delay можно взять из rxLib. ------------------------------------------------------------ handle := WinExec(...); if handle >= 32 then while GetModuleUsage(handle) > 0 do Delay( nn ); else raise .... Чтобы выяснить, работает ли программа, используйте GetProcessTimes(), параметр lpExitTime. ------------------------------------------------------------ Handle := Winexec(App, 0); PostMessage(Handle, WM_QUIT, 0, 0);
Ответ отправлен: 02.03.2004, 18:24 Отправитель: Pawel Отвечает Snowm@n
Здравствуйте, В.Иванов! Процедура (гляди в приложение) запускает прогу и ждет ее завершения.
Приложение: Ответ отправлен: 02.03.2004, 18:44 Отправитель: Snowm@n Отвечает Boriss
Приветствую Вас, В.Иванов! Вот так делают (WinExec лучше не использовать. Так как меньше возможностей, да и все равно произойдет вызов CreateProcess). Значение остальных параметров смотри в справке по CreateProcess
Приложение: Ответ отправлен: 05.03.2004, 08:35 Отправитель: Boriss
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.