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

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


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

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 149
от 11.06.2005, 17:10

Администратор:Калашников О.А.
В номере:Вопросов: 6, Ответов: 23


Вопрос № 21807: Добрый день Каким образом можно сделать, чтобы по двойному нажатию на ветке, только не корневой в TreeView происходило действие, а именно: TWebBrowser(PlugInInterface.GetApplication. MainForm.FindComponent('wb')). OleObject.Documen...
Вопрос № 21810: Я пишу многофункциональную утилиту. И возникла ошибка :Duplicate resourses Что делать? Спасибо www.sassoft.narod.ru...
Вопрос № 21814: Уважаемые эксперты у меня такая проблемма. Из одного проекта находящегосе в D:1 я запускаю через winexec другой экзешник который находиться в d:12 и который работает с файлами которые находяться в d:123. Когда я это все дело компелю из ...
Вопрос № 21817: гДПЮБЯРБСИРЕ! с ЛЕМЪ РЮЙНИ БНОПНЯ: бНР ЕЯРЭ РЮАКХЖЮ оЮПЮДНЙЯ №1 Х ЕЯРЭ РАКХЖЮ ОЮПЮДНЙЯ №2. б РЮАКХЖЕ №1 ЕЯРЭ ЯРНКАЕЖ гЮПОКЮРЮ. (рХО ДЮММШУ Number). ю Б РЮАКХЖЕ №2 ЕЯРЭ ЯРНКАЕЖ жЕУ(рХО A) Х ЯРНКАЕЖ бЯЕЦН. б ЯРНКАЖЕ жЕУ ЕЯРЭ ЯРПНЙЮ №1 Х...
Вопрос № 21837: Вопрос такой: Имеется главная MDI форма frmMain и дочерняя frmChild. Необходимо, чтобы при запуске программы (TfrmMain.FormCreate) создавалось дочернее окно. (В свойствах проекта форма frmChild убрана в раздел Available Forms) В TfrmMain.Form...
Вопрос № 21838: Здраствуйте эксперты!!! У меня такая большая проблема,не могу распечатать таблицу Stringgrid1. Мне нужна вот такая помощь. Я хочу распечатать таблицу (взять прогу можно на сайте http:\newinfo2005.narod.ru прога"Записная книжка&q...

Вопрос № 21.807
Добрый день
Каким образом можно сделать, чтобы по двойному нажатию на ветке, только не корневой в TreeView происходило действие, а именно:
TWebBrowser(PlugInInterface.GetApplication.
MainForm.FindComponent('wb')).
OleObject.Document.frames.item(0).
Document.tz.SetVariable('_level0.skin_login.login.text',
Edit1.Text);
TWebBrowser(PlugInInterface.GetApplication.
MainForm.FindComponent('wb')).
OleObject.Document.frames.item(0).
Document.tz.SetVariable('_level0.skin_login.psw.text',
Edit2.Text);
Отправлен: 05.06.2005, 20:27
Вопрос задал: Алексей (статус: Посетитель)
Всего ответов отправлено: 3

Отвечает: nimoid
Здравствуйте, Алексей!
Вот так:
procedure TForm1TreeView1DblClick(Sender: TObject);
begin
if (TreeView1.Selected.Parent<>NIL) then
begin
TWebBrowser(PlugInInterface.GetApplication.
MainForm.FindComponent('wb')).
OleObject.Document.frames.item(0).
Document.tz.SetVariable('_level0.skin_login.login.text',
Edit1.Text);
TWebBrowser(PlugInInterface.GetApplication.
MainForm.FindComponent('wb')).
OleObject.Document.frames.item(0).
Document.tz.SetVariable('_level0.skin_login.psw.text',
Edit2.Text);
end;
end;
Ответ отправил: nimoid (статус: 2-ой класс)
Отправлен: 05.06.2005, 22:02

Отвечает: streetcat
Здравствуйте, Алексей!
код обработчика события OnDblClick Tree (TTreeView) в приложении

Приложение:

---------
WinERROR: Keyboard not detected. Press Enter to continue

Ответ отправил: streetcat (статус: 6-ой класс)
Отправлен: 05.06.2005, 23:20

Отвечает: VBA
Здравствуйте, Алексей!
If TreeView1.Selected.IsFirstNode Then
Begin
//код
End;
---------
Неправ вечно юзер, ибо прав всегда Админ!
Ответ отправил: VBA (статус: 4-ый класс)
Отправлен: 06.06.2005, 12:43


Вопрос № 21.810
Я пишу многофункциональную утилиту.
И возникла ошибка :Duplicate resourses
Что делать?
Спасибо
www.sassoft.narod.ru
Отправлен: 05.06.2005, 22:18
Вопрос задал: Sassoft (статус: Посетитель)
Всего ответов отправлено: 4

Отвечает: streetcat
Здравствуйте, Sassoft!
Поищи ошибку там, где подключаешь модули и ресурсы
Эта ошибка значит, что где-то в коде программы (должна быть указана строка) происходит двух- или многократное объявление директивы подключения ресурсов
к модулю.
---------
WinERROR: Keyboard not detected. Press Enter to continue
Ответ отправил: streetcat (статус: 6-ой класс)
Отправлен: 05.06.2005, 23:10

Отвечает: nimoid
Здравствуйте, Sassoft!
А конкретнее можно? Что делал, какие ресурсы добавлял?
Из названия ошибки видно, что произошло дублирование ресурсов. Ищи дубликат.
Ответ отправил: nimoid (статус: 2-ой класс)
Отправлен: 05.06.2005, 23:12

Отвечает: Bochvarov NikB
Здравствуйте, Sassoft!
Проверь имен Form в проекте.
После Implementation находится
{$R *.DFM}
и когда имен tForm в два разньих units сопадают - возникает ето ошибка.
(Примерно в Unit1 ест tForm1 и в Unit2 есть tForm1)
Конечно, и всегда, когда ест дублирование ресурсов.
Ответ отправил: Bochvarov NikB (статус: 3-ий класс)
Отправлен: 05.06.2005, 23:25

Отвечает: Delphin
Здравствуйте, Sassoft!
Повторяющиеся ресурсы.
Неложил на форму компонента TxpManifest? Может он...
После Implementation есть строка {$R xxxx.dfm}
Может она повторяется где-то. Заметь не обезательно dfm расширение.
Смотри все Unit'ы.

---------
Ищу сервис пак для школы ^)))
Ответ отправил: Delphin (статус: 4-ый класс)
Отправлен: 06.06.2005, 11:49


Вопрос № 21.814
Уважаемые эксперты у меня такая проблемма.
Из одного проекта находящегосе в D:1 я запускаю через winexec другой экзешник который находиться в d:12 и который работает с файлами которые находяться в d:123.
Когда я это все дело компелю из делфи все работает нормально.
Но Когда я запускую первый экзешник, из него вызываю второй, то он начинает ругаться что не может найти текстовые файлы.
Путь к файлам прописан так '3имя файла'.
Что можно сделать кроме того как писать прямой путь (с:123)
И как можно у казать в проекте что бы файлы искал на 2 каталога ниже. (....имя файла);
Работа с файлами стандартными функциями
asinghfile
reser
Заранее огромное спасибо
Отправлен: 06.06.2005, 02:02
Вопрос задал: twmd (статус: 3-ий класс)
Всего ответов отправлено: 7

Отвечает: Bochvarov NikB
Здравствуйте, twmd!
Можно узнать путь к путь к екзешнику (ParamStr(0) или Application.ExeName) - ето для ехе1. Потом строиш путь к ехе2 и к его файлам.
ExtractFilePath(Application.ExeName)+'2Exe2.exe'
ExtractFilePath(Application.ExeName)+'23'
Посмотри и
function NormalDir(const DirName: string): string;
Ответ отправил: Bochvarov NikB (статус: 3-ий класс)
Отправлен: 06.06.2005, 02:29

Отвечает: sir henry
Здравствуйте, twmd!
Задавайте путь относительно первого экзешника (т.е. основной программы).
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 06.06.2005, 06:44

Отвечает: Denisss
Здравствуйте, twmd!
все дело в том, что при запуске Вашей программы из среды Delphi, в качестве рабочей папки программе присваивается та, где находится проект. Чтобы этого избежать, можно воспользоваться функцией GetAppPath (код в приложении), либо при запуске приложения указать, что Вашей рабочей папкой является та папка, где находится приложение.
После таких манипуляций в качестве путей к файлам можно использовать "." - для файлов и папок, находящихся в директории с проектом, ".." - для перехода на каталог ниже.

Приложение:

Ответ отправил: Denisss (статус: 3-ий класс)
Отправлен: 06.06.2005, 08:32

Отвечает: Jadd
Здравствуйте, twmd!
Дык очень просто. Я сам часто так делаю. Т.е. определяю каталог запуска программы и смещаюсь относительно его. А делается это так:
Applicatiob.ExeName - возвращает полный путь к запущенному приложению. Дальше убираем из этого пути имя самого экзешника (оставляю эту процедуру тебе). После чего, мы добавляем в сформированный путь папку следующего уровня и начинаем перебор файлов в этой папке. Вот так это делается:
var
FindData: TSearchRec;
DirPath: String;
FileAttrs: Integer;
fFinished: Boolean;
begin
fFinished := false;
//extract exact path
DirPath := DirPath + 'MyDir*.*'; //тут могут быть маска по расширению или иначе (см. хелп).
//берем первый файл
FindFirst(DirPath, FileAttrs, FindData);
while not fFinished do
begin
//для наглядности я помещаю его имя в список, а ты можешь делать как хочешь
List.Add(UpperCase(FindData.Name));
if FindNext(FindData) <> 0 then
begin //если больше нет файлов
if GetLastError <> ERROR_NO_MORE_FILES then
ShowMessage('Can`t find next file');
fFinished := true;
end;
end;
//завершаем операцию поиска
FindClose(FindData);
Как ты понимаешь, из этой структуры (сиречь о TSearchRec....описание в хелпе) мы извлекаем имя файла и дальше его можно добавить к полному пути и запустить и/или проверить на какое-то условие. Короче, все просто и понятно. Удачи.

---------
Hakuna matata
Ответ отправил: Jadd (статус: 8-ой класс)
Отправлен: 06.06.2005, 10:13

Отвечает: Delphin
Здравствуйте, twmd!
Когда запускаешь файл надо передавать рабочий каталог.
А что мешает использовать "...." ?
---------
Ищу сервис пак для школы ^)))
Ответ отправил: Delphin (статус: 4-ый класс)
Отправлен: 06.06.2005, 11:51

Отвечает: John Freeman
Здравствуйте, twmd!
1) CreateProcess - там можно указывать рабочую папку
2) SetCurrentDirectory - ясно что, совместно с WinExec, но это (winexec) deprecated!
3) Добавить в Path , но это грубо.
---------
Время надирать задницы и жевать жвачку. Чёрт, но у меня кончилась жвачка!!!
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 06.06.2005, 15:23

Отвечает: Ballon
Здравствуйте, twmd!
Используй функцию ExtractFilePath() что бы узнать путь к запущеному экзешнику
Ответ отправил: Ballon (статус: 3-ий класс)
Отправлен: 07.06.2005, 08:05


Вопрос № 21.817
гДПЮБЯРБСИРЕ! с ЛЕМЪ РЮЙНИ БНОПНЯ:
бНР ЕЯРЭ РЮАКХЖЮ оЮПЮДНЙЯ №1 Х ЕЯРЭ РАКХЖЮ ОЮПЮДНЙЯ №2.
б РЮАКХЖЕ №1 ЕЯРЭ ЯРНКАЕЖ гЮПОКЮРЮ. (рХО ДЮММШУ Number).
ю Б РЮАКХЖЕ №2 ЕЯРЭ ЯРНКАЕЖ жЕУ(рХО A) Х ЯРНКАЕЖ бЯЕЦН.
б ЯРНКАЖЕ жЕУ ЕЯРЭ ЯРПНЙЮ №1 Х №2. йЮЙ Б ЯРПНЙС №1 РЮАКХЖХ №2 ОЕПЕМЕЯРХ ВХЯКН ХГ ЯРНКАЖЮ ГЮПОКЮРЮ. ю Б ЯРПНЙС №2 ДНАЮБХРЭ ВХЯКН, ЯЙЮФЕЛ 5.
гЮПЮМЕЕ ЯОЮЯХАН.
оПНЯЭАЮ НРБЕВЮРЭ МЮ Email: JohnFaustov@mail.ru
Отправлен: 06.06.2005, 06:54
Вопрос задал: Иван Фаюстов (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: sir henry
Здравствуйте, Иван Фаюстов!
Поскольку у Вас текстовый формат, то можно так:
Таблица2Цех.Value:=Таблица1Зарплата.AsString;
У каждого поля есть свойство AsXXXX, где XXXX - это типы данных (String, Boolean, Integer и т.п.).
Используйте этот принцип.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 06.06.2005, 07:24


Вопрос № 21.837
Вопрос такой:
Имеется главная MDI форма frmMain и дочерняя frmChild. Необходимо, чтобы при запуске программы (TfrmMain.FormCreate) создавалось дочернее окно. (В свойствах проекта форма frmChild убрана в раздел Available Forms)
В TfrmMain.FormCreate пишу frmChild:=TFrmChild.Create(Self);
При запуске появляется ошибка "Cannot create form. No MDI forms are currently active".
Кто в английском не силен перевожу: "Невозможно создать форму. Нет активной MDI формы."
Пробовал активизировать главную форму методом Activate, но результат тот же.
Какие есть мысли по этому поводу?
Отправлен: 06.06.2005, 13:26
Вопрос задал: VBA (статус: 4-ый класс)
Всего ответов отправлено: 5

Отвечает: Bochvarov NikB
Здравствуйте, VBA!
Я ето делаю так:
1. декларация flFirst : boolean; в TfrmMain
2. В OnCreate пишу flFirst := true;
3. В OnActivate:
If flFirst then begin
flFirst:=false;
frmChild:=TFrmChild.Create(Self);
end;
Пожно сделать и с PostMessage в OnCreate
Ответ отправил: Bochvarov NikB (статус: 3-ий класс)
Отправлен: 06.06.2005, 14:16

Отвечает: Jadd
Здравствуйте, VBA!
Ты почти все правильно делал, за одним НО. Не нужно терзать главную форму. Ее нужно открывать как обычно. Но вот дочернее окно можно открыть вставив код инициализации дочернего окна и его показа в метод OnActivate главной формы. Вот кусок программы, сгенеренной дельфей и с добавленным мной кодом:
************какой-то код**************
procedure TMainForm.CreateMDIChild(const Name: string);
var
Child: TMDIChild;
begin
{ create a new MDI child window }
Child := TMDIChild.Create(Application);
Child.Caption := Name;
if FileExists(Name) then Child.Memo1.Lines.LoadFromFile(Name);
end;
procedure TMainForm.FormActivate(Sender: TObject);
begin
CreateMDIChild('BlaBlaBla');
end;
********************какой-то код**************************
Вот эта связка работает на 100%. Удачи.
---------
Hakuna matata
Ответ отправил: Jadd (статус: 8-ой класс)
Отправлен: 06.06.2005, 15:47

Отвечает: Denisss
Здравствуйте, VBA!
Если Вы хотите, чтобы MDI окно появлялось именно при FormCreate и, при этом, не хотите помещать в ActivateForm (по различным причинам, например, чтобы не объявлять лишних глобальных переменных, которые Вы случайно можете забыть вовремя заполнить и тогда вновь придется искать где ошибка), то можете глянуть в приложение - оно оч. может помочь. Кроме того оно работает :)

Приложение:

Ответ отправил: Denisss (статус: 3-ий класс)
Отправлен: 06.06.2005, 16:15

Отвечает: sir henry
Здравствуйте, VBA!
Вообще-то должно все работать без проблем, Вы только дочернее окно верните обратно и оно будет создаваться автоматом.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 07.06.2005, 10:34

Отвечает: streetcat
Здравствуйте, VBA!
хорошо бы видеть значения свойств форм...
непонятно, какое окно должно создаваться: просто дочернее или MDI Child.
Если второе, то проверь стоят ли значения fsMDIForm в свойстве frmMain.FromStyle и fsMDIChild в frmChild.FormStyle. А еще попробуй вместо строки
frmChild:=TFrmChild.Create(Self);
поставить
frmChild:=TFrmChild.Create(Application);
в обработчике OnCreate формы frmMain
---------
WinERROR: Keyboard not detected. Press Enter to continue
Ответ отправил: streetcat (статус: 6-ой класс)
Отправлен: 07.06.2005, 14:38


Вопрос № 21.838
Здраствуйте эксперты!!!
У меня такая большая проблема,не могу распечатать таблицу
Stringgrid1.
Мне нужна вот такая помощь.
Я хочу распечатать таблицу (взять прогу можно на сайте http:\newinfo2005.narod.ru прога"Записная книжка").
Так как она есть но при этом также должны присутстововать предосмотр таблицы как она будет выведена на лист бумаги.
И ещё должна отобразиться сама таблица(границы).
Отправлен: 06.06.2005, 14:03
Вопрос задал: newinfo2005 (статус: 2-ой класс)
Всего ответов отправлено: 3

Отвечает: Jadd
Здравствуйте, newinfo2005!
а всякие там репорты не подойдут? Системы генерации репортов?
---------
Hakuna matata
Ответ отправил: Jadd (статус: 8-ой класс)
Отправлен: 06.06.2005, 15:38
Оценка за ответ: 3
Комментарий оценки:
А тогда пришли мне приложение того как бы ты это делал!!!

Отвечает: Ballon
Здравствуйте, newinfo2005!
Воспользуйся QuickReport а лучше переведи в Excel
Ответ отправил: Ballon (статус: 3-ий класс)
Отправлен: 07.06.2005, 07:59
Оценка за ответ: 5

Отвечает: sir henry
Здравствуйте, newinfo2005!
Записная книжка и вдруг StringGrid? Для этого дела идеально БД подходит, а уж к БД тучи всевозможного барахла для распечатки и предпросмотров (RAVE, QReport - в составе Дельфи, FastReport - мне больше нравиться, но надо скачивать с инета, CrystalReport - вообще мощняк, строятся любые отчеты за пять минут, но платная, хотя есть кряки).
Вот примерчик для печати StringGrid (без предпросмотра):
http://deep.webest.net/forum/reply.php?num=1.2&id=141638
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 07.06.2005, 10:31
Оценка за ответ: 5


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

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

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться
Вспомнить пароль

В избранное