Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C++ Builder / Delphi

Выпуск № 299
от 06.03.2004, 02:10

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 1385
Отправлено ответов: 3069
Активность: 221.5 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

samum2000
Статус: Опытный
Общий рейтинг: 127.34
[Подробней >>]
sir henry
Статус: Профессиональный
Общий рейтинг: 159.42
[Подробней >>]
Pawel
Статус: Профессиональный
Общий рейтинг: 163.41
[Подробней >>]
 
Boriss
Статус: Профессиональный
Общий рейтинг: 152.9
URL: Программирование на Паскале
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 143.76
URL: Программирование
[Подробней >>]
THE_PRO
Статус: Профессиональный
Общий рейтинг: 138.46
URL: THE_PRO
Телефон: (994 +12) 989647
[Подробней >>]
 
Snowm@n
Статус: Доверительный
Общий рейтинг: 128.57
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1370. Здравствуйте. Не подскажите компонент сбора конфигурации жедлеза. Если можно и где его взять. Спасиб... (ответов: 3)
Вопрос № 1371. Недавно начал изучать Дельфи, но столкнулся с проблемой, что множество документации идет под СИ или ... (ответов: 3)
Вопрос № 1372. Здравствуйте. В Delphi-среде я пишу на WinAPI и хочу запихнуть wav-файл в ресурсный файл (*.res или ... (ответов: 5)
Вопрос № 1373. Здравствуйте, все! Написал вот такое произведение (см.прил), а оно не работает. Помогите, плиз, испр... (ответов: 5)
Вопрос № 1375. Здравствуйте эксперты ! Помогите плз. Появились 3 вопрса по StringGridу: 1) как переместить курсор-р... (ответов: 3)
Вопрос № 1377. Здравствуйте уважаемые эксперты. Помогите решить вот такую проблему. Необходимо запустить ДОСовское ... (ответов: 3)

Вопросов: 6, ответов: 22


 Вопрос № 1370

Здравствуйте.
Не подскажите компонент сбора конфигурации жедлеза.
Если можно и где его взять.
Спасибо.



Вопрос отправлен: 01.03.2004, 10:37
Отправитель: Вадим

[Следующий вопрос >>] [Список вопросов]

Отвечает samum2000

Приветствую Вас, Вадим!
Вот, держите:
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

Недавно начал изучать Дельфи, но столкнулся с проблемой, что множество документации идет
под СИ или Визуал СИ. Помогите пожалуйста перевести приложенный исходник на Дельфи.
И может кто поможет с хорошей книгой по Дельфи в электронном виде.


Приложение:


Вопрос отправлен: 01.03.2004, 11:31
Отправитель: Александр

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Приветствую Вас, Александр!
У меня есть богатая коллекция литературы и исходников по 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 можно иконки,рисунки поместить в ресурсный файл.
Есть ли такая программа вообще для любых типов ресурсов, а не только для рисунков?
Спасибо.



Вопрос отправлен: 01.03.2004, 14:25
Отправитель: nkid

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Доброе время суток, 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

Здравствуйте, все!
Написал вот такое произведение (см.прил), а оно не работает.
Помогите, плиз, исправить ошибки. Дайте пожалуйста ссылочку на хорошую книгу по Дельфи (желательно в электр виде).


Приложение:


Вопрос отправлен: 01.03.2004, 15:27
Отправитель: Александр

[Следующий вопрос >>] [Список вопросов]

Отвечает 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;

Ответ отправлен: 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.
Заранее спасибо.



Вопрос отправлен: 01.03.2004, 20:21
Отправитель: Радик (rdk78@nightmail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Boriss

Добрый день, Радик!
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);
Но как закрыть форму, из которой запущено
приложение. Вернее как узнать, что ДОСовское
приложение закончило работу?



Вопрос отправлен: 02.03.2004, 15:53
Отправитель: В.Иванов

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Доброе время суток, В.Иванов!
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.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (28)
C / C++ (20)
Perl (2)
Builder / Delphi (17)
Pascal (20)
Basic / VBA (8)
Java / JavaScript (4)
PHP (11)
Криптография (6)
WinAPI (15)
Радиоэлектроника (9)
Пользователю
Windows 95/98/Me (37)
Windows NT/2000/XP (58)
"Железо" (32)
Поиск информации (17)
Администратору
Windows NT/2000/XP (27)
Linux / Unix (10)
Юристу
Гражданское право (15)
Семейное право (12)
Трудовое право (12)
КоАП (10)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное