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

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


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

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

Выпуск № 420
от 21.03.2006, 22:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 282, Экспертов: 69
В номере:Вопросов: 8, Ответов: 15


Вопрос № 37617: Здравствуйте господа программисты. Проблема вот в чем: необходимо отслеживать процесс навигации по базе данных(BDE) т.е. как определить что пользователь перешел к какой - то записи? Заранее благодарен. ...
Вопрос № 37626: Здраствуйте! Народ помогите! Пишу прогу для работы с базами данных! Но тут такая шняга! В TQuery.SQL пишу запрос на создание таблицы(конечноже сначала закрыв,отчистив и т.д.): Create table test (hit integer, gem char(10)); И к...
Вопрос № 37656: Здравствуйте Специ. Есть ли возможность эмулировать досовскую печатать из под любой винды (95, 98, ХР, 2000, 2003) Printers - такой возможности не дает Нужно печатать большой текст формата А3 каждый день...
Вопрос № 37667: Здраствуйте эксперты!! Опять я к вам с вопросом!! Поскажите пожалуйста... Нужно посчитать несобственный интеграл от нуля до бесконечности с помошью формулы прямоугольников(???)(метод Эйлера) с указанной точностью....
Вопрос № 37669: Уважаемые эксперты, помогите, пожалуйста, разобраться, почему так происходит. Есть программа , которая вводит данные в таблицу EXCEL, а потом записывает в таблицы ORACLE. Ixlsapp.DisplayAlerts[0]:=false; Showexcel; IXLSApp.Display...
Вопрос № 37670: У компонента TToolBar есть свои кнопки TToolButton, поменяв свойство style="tbsDropDown" у них появляются рядом курсор вниз. В общем нужна такая же кнопка, но не на ToolBar-e, а прям на форме. Где найти такой компонент?...
Вопрос № 37683: Доброго времени ув. На днях читал что Borland отказывается от продолжения работы нат своей средой разработки. Что можете сказать по етому случаю? Я програмирую в 6-й версии уже давно, хотел перейти на 2006. Стои ли?...
Вопрос № 37700: Доброго времени суток. Помогите пожалуйста с такой проблемкой,а то я уже не знаю что и делать: Есть компонент ListView, со свойствами: - RowSelect=True; - Viewstyle="vsReport;" - SmallImages = TimageList; Как в таком случае оп...

Вопрос № 37.617
Здравствуйте господа программисты. Проблема вот в чем: необходимо отслеживать процесс навигации по базе данных(BDE) т.е. как определить что пользователь перешел к какой - то записи?
Заранее благодарен.
Отправлен: 16.03.2006, 00:04
Вопрос задал: Leshiy2006 (статус: 5-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Bochvarov NikB
Здравствуйте, Leshiy2006!
Наверное ползуеш TDataSоurce - примени его собитие OnDataChange, но, что бьи не мерцало ( :-) ), надо каждой раз идентифицироват текущего записа (или проверят изменения DataSet.RecNo
Ответ отправил: Bochvarov NikB (статус: 6-ой класс)
Ответ отправлен: 16.03.2006, 01:12
Оценка за ответ: 5
Комментарий оценки:
Спасибо за помощь.

Отвечает: sir henry
Здравствуйте, Leshiy2006!
У компонента TDataSet и его потомков (TTable например) есть событие AfterScroll, которое происходит сразу после того, как пользователь переместился от одной записи к другой. Вот и вставьте в это событие свой оповещатель, что пользователь перешел к другой записи.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 16.03.2006, 05:51
Оценка за ответ: 5
Комментарий оценки:
Спасибо за помощь!


Вопрос № 37.626
Здраствуйте! Народ помогите!
Пишу прогу для работы с базами данных! Но тут такая шняга!
В TQuery.SQL пишу запрос на создание таблицы(конечноже сначала закрыв,отчистив и т.д.):
Create table test
(hit integer,
gem char(10));
И как только его выполняю вылетает ошибка типа ENoResultSet и что-то типа "Ошибка не создан указатель курсора" (Что-то вроде этого будет по русски звучать)Но смотрю через SQLExplorer таблица создана,как я понял он должен был вернуть Хандл,но этого не сделал! Что делать?!
И ещё после нескольких попыток он мне выкидывает друггую ошибку "Insufficient memory for this operator. Alias:test2" Что здесь делать?Помогает только перезагрузка! А как ещё можно отчистить эту память?!
Отправлен: 16.03.2006, 04:32
Вопрос задал: chikanok (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, chikanok!
А Вы просто напросто неправильно используете TQuery. Наверняка чтобы выполнить запрос Вы пишете Query1.Open, однако если Вы заглянете в хелп, то там черным по белому написано, что Open нужно использовать только тогда, когда собираетесь получить набор данных, а это ничто иное, как команда SELECT. Все остальные виды запросов (удаление, апдейт, создание таблиц и т.п.) выполняются только с помощью ExecSQL.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 16.03.2006, 05:55


Вопрос № 37.656
Здравствуйте Специ.
Есть ли возможность эмулировать досовскую печатать из под любой винды (95, 98, ХР, 2000, 2003)
Printers - такой возможности не дает
Нужно печатать большой текст формата А3 каждый день
Отправлен: 16.03.2006, 12:03
Вопрос задал: Cheater76 (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Sniffer
Здравствуйте, Cheater76!
Можно. Вот процедура - нажеюсь разберетесь...

PrinterName:String - это имя принтера (можно и сетевой) - если локально то 'lpt'
S - это строка из файла. Читаем файл построчно и передаем процедуре....

Если че пишите в личку вышлю готовый пример использования этой процедуры...

procedure WriteRawStringToPrinter(PrinterName:String; S:String);
var
Handle: THandle;
N: DWORD;
DocInfo1: TDocInfo1;
begin
if not OpenPrinter(PChar(PrinterName), Handle, nil) then
begin
ShowMessage('error ' + IntToStr(GetLastError));
Exit;
end;
with DocInfo1 do begin
pDocName := PChar('test doc');
pOutputFile := nil;
pDataType := 'RAW';
end;
StartDocPrinter(Handle, 1, @DocInfo1);

StartPagePrinter(Handle);
WritePrinter(Handle, PChar(S), Length(S), N);
EndPagePrinter(Handle);
EndDocPrinter(Handle);
ClosePrinter(Handle);
end;
Ответ отправил: Sniffer (статус: Студент)
Ответ отправлен: 17.03.2006, 08:29
Оценка за ответ: 5


Вопрос № 37.667
Здраствуйте эксперты!!
Опять я к вам с вопросом!!
Поскажите пожалуйста...
Нужно посчитать несобственный интеграл от нуля до бесконечности
с помошью формулы прямоугольников(???)(метод Эйлера) с указанной точностью.
Отправлен: 16.03.2006, 14:01
Вопрос задал: F Ruslan R (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: Татьяна
Здравствуйте, F Ruslan R!
Ну так а в чем собственно проблема? насколько я помню, выбираете cколь угодна малый шаг h, и начинаете двигаться с 0. Например, схематически по формуле левых прямоугоьников выглядит примерно так (предупреждаю - пишу по памяти, но идея такая)
x = 0
s1 = f(x)*h;
repeat
s2=s1;
x=x+h;
s1 = s1+ f(x)*h;
until abs(s1-s2) Вообще говоря если интеграл сходится, то число шагов будет конечно, но лучше еще на всякий случай поставить ограничение на число шагов (чтоб не уйти в бесконечность)
---------
Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: Студент)
Ответ отправлен: 16.03.2006, 22:36
Оценка за ответ: 2


Вопрос № 37.669
Уважаемые эксперты, помогите, пожалуйста, разобраться, почему так происходит.
Есть программа , которая вводит данные в таблицу EXCEL, а потом записывает в таблицы ORACLE.
Ixlsapp.DisplayAlerts[0]:=false;
Showexcel;
IXLSApp.DisplayFullScreen[0];
IRange := nil;
ISheet := nil;
IWorkbook := nil;

ShowMessage(' Идет запись в Oracle ');
btzapclick; // процедура записи в ORACLE

До этого создается экземпляр EXCEL шаблона ввода данных,
Если данные уже были записаны, то они читаются и записываются в EXCEL.
Затем должна открываться таблица EXCEL и вводиться данные.
Если я не пишу оператор SHOWMessage ,то EXCEL не открывается, а выполнение идет на прцедуру btzapclick и записываются нулевые данные . С SHOWMessage все выполняется правильно. В чем здесь дело?

Отправлен: 16.03.2006, 14:08
Вопрос задала: Бородина (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: akaDemik
Здравствуйте, Бородина!
Оператор ShowMessage приостанавливает выполнение программы, до тех пор, пока пользователь не нажмет на "Ok". При отсутствии ShowMessage Excel просто не успевает открыться. В вашем случае скорее всего ввод данных в таблицу происходит до того как в появившемся окне будет нажата кнопка "Ок". Попробуйте отследить закрытие окна Excel пользователем или замените ShowMessage на что-то вроде:

if Application.MessageBox('Введены ли данные в таблицу?','Запись в Oracle',MB_YESNO+MB_ICONQUESTION) = ID_YES then
btzapclick // процедура записи в ORACLE
else
//Что-нибудь на тот случай если в таблицу ничего не введут (передумали например ;)
Ответ отправил: akaDemik (статус: 2-ой класс)
Ответ отправлен: 16.03.2006, 16:08

Отвечает: sir henry
Здравствуйте, Бородина!
По всей видимости Вам нужно предусмотреть, чтобы процедура btzapclick НЕ выполнялась, пока не закроется окно Excel. Т.е. закрытие окна здесь служило бы признаком того, что данные введены.
К сожалению я не понимаю Ваш алгоритм работы с Excel, Это какой-то компонент или что другое, поэтому ничего конкретного подсказать не могу.
Так, в порядке общего совета, можно ввести на форме две кнопки - "Окрыть Excel" и "Записать данные в Oracle". Сначала нажимаете на первую, вводите данные, закрываете Excel, потом нажимаете вторую и там запускается процедура btzapclick.
Извините, что не смог дать Вам конкретного совета.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 16.03.2006, 17:43


Вопрос № 37.670
У компонента TToolBar есть свои кнопки TToolButton, поменяв свойство style="tbsDropDown" у них появляются рядом курсор вниз. В общем нужна такая же кнопка, но не на ToolBar-e, а прям на форме. Где найти такой компонент?
Отправлен: 16.03.2006, 14:09
Вопрос задал: Rusland (статус: Специалист)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Bochvarov NikB
Здравствуйте, Rusland!
А тебе что мешает ставит на форме панел, а в ним - тулбар с кнопки?
Ответ отправил: Bochvarov NikB (статус: 6-ой класс)
Ответ отправлен: 16.03.2006, 14:30
Оценка за ответ: 3
Комментарий оценки:
Я же ясно написал, что тулбар не подходит.

Отвечает: Ерёмин Андрей
Здравствуйте, Rusland!
К сожалению, я не знаю отдельного такого компонента, но он есть в JediVCL:
http://jvcl.sourceforge.net/
Но пакет достаточно большой - около 9-10 Мб, хотя стоящий того - там несколько сотен компонент. Такая кнопка находится на странице JvAdditional.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 16.03.2006, 15:02
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Поищу на дисках.


Вопрос № 37.683
Доброго времени ув.
На днях читал что Borland отказывается от продолжения работы нат своей средой разработки. Что можете сказать по етому случаю? Я програмирую в 6-й версии уже давно, хотел перейти на 2006. Стои ли?
Отправлен: 16.03.2006, 16:28
Вопрос задал: Negruzzi Cristian (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Данилевич Игорь Владимирович
Здравствуйте, Negruzzi Cristian!

Если вам нужно поддержку .NET, то переходите.
Но множество компонентов на просторах Интернета совместимы именно с Delphi 6/7.
Лично мне тоже шестой версии хватает.
Ответ отправил: Данилевич Игорь Владимирович (статус: 1-ый класс)
Ответ отправлен: 16.03.2006, 16:43

Отвечает: Николай Б.
Здравствуйте, Negruzzi Cristian!
Я программирую в Delphi 7. С удовольствием посмотрел (не переходил) бы на 2006 -ую версию, но не могу найти её в магазинах (лицензионная - не по карману). Говорят, что она слишком мощная и тяжело настраивается.
Насчёт перехода: если нужны какие-то возможности, которых нет в Delphi 6 или ещё что-то, можно перейти, а так - незнаю. :)
Если хочешь, могу дать ссылки на Delphi 2006. Ссылки рабочие. Пиши: new-pro@yandex.ru.

PS здесь ссылки не кладу, а то вдруг "по мягкому месту надают". :)
Удачи!
Ответ отправил: Николай Б. (статус: 2-ой класс)
Ответ отправлен: 16.03.2006, 17:00

Отвечает: sir henry
Здравствуйте, Negruzzi Cristian!
Стоит переходить только в том случае, если Вы собираетесь программировать на основе .NET или использовать в качестве программы разработки C#. Для Win32 D2006 ничего принципиально нового не прибавил. Единственное что бы я Вам посоветовал, это поставить последний апгрейд для 6-ой версии, т.к. там нашлось несколько не сильно принципиальных, но в некоторых случаях неприятных глюков.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 16.03.2006, 17:49

Отвечает: Diman_A
Здравствуйте, Negruzzi Cristian!
Delphi 2006 я не видел, но ставил себе 2005-ю. Сам давно сижу в delphi 5 и 6, но посмотрел на их новую "среду разработки" и решил - остаюсь в delphi 6. Слишком много лишнего в новых версиях понапихали. Думаю, не стоит переходить на новую delphi. Да и компоненты почти все на delphi 6 и 7.
Ответ отправил: Diman_A (статус: 7-ой класс)
Ответ отправлен: 17.03.2006, 17:27


Вопрос № 37.700
Доброго времени суток.
Помогите пожалуйста с такой проблемкой,а то я уже не знаю что и делать:
Есть компонент ListView, со свойствами:
- RowSelect=True;
- Viewstyle="vsReport;"
- SmallImages = TimageList;
Как в таком случае определенным строкам убрать ImageList,т.е. чтобы
caption у этой строки был левее чем у других?
P.S. Так сделано в PartitionMagic.
Отправлен: 16.03.2006, 19:33
Вопрос задал: Latent (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Полховский Александр Владимирович
Здравствуйте, SergSK!
Можно перейти на собственную прорисовку списка, изменив значение свойства OwnerDraw на true и написав обработчик события OnDrawItem. Но тогда вся ответственность по прорисовке ляжет на Вас. Если это приемлимо, то так и сделайте.
---------
Спасём нашу хрупкую планету !
Ответ отправил: Полховский Александр Владимирович (статус: Практикант)
Ответ отправлен: 16.03.2006, 21:07
Оценка за ответ: 4

Отвечает: sir henry
Здравствуйте, SergSK!
У ListView, я думаю, никак. Судя по тому, что Вы хотите, Вам наверное лучше использовать компонент, постороеный на основе TTreeView. Он как раз позволяет создавать иерархические списки. Т.е. есть список заголовков. У каждого заголовка свой подчиненный список. Все заголовки отображаются в одно линией, а подчиненные списки уже со сдвигом вправо.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 17.03.2006, 07:00
Оценка за ответ: 5
Комментарий оценки:
Я знаю,что в TreeView так можно делать,но мне надо именно в Listview. Ведь в PartitionMagic используется именно ListView, и мне надо сделать ListView анологичные ему. Я все сделал кроме этого.


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.20 (beta) от 17.03.2006
Яндекс Rambler's Top100

В избранное