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

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


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

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

Выпуск № 767
от 01.04.2007, 10:05

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


Вопрос № 79760: Здравствуйте! У меня такая проблема, я записываю элементы ListView в переменную: var L: TListItems; L := ListView.Items; //Записываем элементы в переменную ListView.Clear; //Очищаем список ListView.Items := L; //восстано...
Вопрос № 79761: Здравствуйте. Необходимо распечатать таблицу. В таблице текст. Компонент и способ не столь важны, нужно распечатать с наименьшим участием пользователя....
Вопрос № 79762: Доброго дня уважаемые експерты. Мне надо после исполнения запроса выбраные даные експортировать в DBF файл. Запрос я запускаю через ADOQuery на базе, которая находиться на MSSQL Server. Через DataSource я записываю результат в DBGrid. Когда я потом п...
Вопрос № 79848: Здравствуйте, уважаемые эксперты! Есть проект, в котором несколько активных окон. Как сделать, чтобы они пристыковывались друг к другу (ну прямо-таки "примагничивались") и к панели задач?...
Вопрос № 79893: Помогите пожалуйста. Уменя на форме Image1, Image2 и Image3 (чорнобелый bmp). Как сделать попиксельное спавнение чтобы определить, кто больше похож на Image1, Image2 или Image3?...
Вопрос № 79895: Народ, привет! Есть проблема с использование компонента idHTTP. Дело в том, что он никак не хочет работать через прокси. Все настройки в ProxyParams и Request забивались и не раз, настройки верные. Также пробывал обрабатывать событие ProxyAuthorizati...
Вопрос № 79902: Добрый день! Возникла небольшая проблема с программой. Из прграммы перенашу данные в Exsel. Использую библиотеку OLE. Все работало хорошо, на разных машинах. Проблема возникла когда запустил на машине с установленным Office 2003. Выдает ошибк...
Вопрос № 79910: Эксперты, помогите выйти из тупика. В Edit (или в любой другой компонент пригодный для ввода текста) необходимо вводить символы в UNICode например символ с кодом 1203(dec) 04b3(hex). На событии OnKeyDown пишу: if (Key = 219) and (ssCtrl in Sh...

Вопрос № 79.760
Здравствуйте!
У меня такая проблема, я записываю элементы ListView в переменную:

var L: TListItems;

L := ListView.Items; //Записываем элементы в переменную
ListView.Clear; //Очищаем список
ListView.Items := L; //восстановливаем список из переменной

Но, дело в том, что когда очищаешь список, то и переменная тоже стирается (точнее, то что она хранит) и в итоге список не восстанавливается.
Как записать элементы списка в переменную, чтобы с ней ничего не случилось и даные при очистке не удалялись?
Отправлен: 26.03.2007, 10:07
Вопрос задал: Red Spirit (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Pavel Maltsev
Здравствуйте, Red Spirit!

В Вашем случае L - это лишь указатель на список элементов.
Нужно вместа кода
ListView.Item := L;
написать что-то вроде:
L := TListItems.Create(nil);
L.Assign(ListView);

Функция Assign как раз нужна для подобных случаев, когда нужно сохранить не адрес экземпляра, а данные.
Ответ отправил: Pavel Maltsev (статус: 3-ий класс)
Ответ отправлен: 26.03.2007, 11:31
Оценка за ответ: 5
Комментарий оценки:
Спасибо, теперь все понятно!

Отвечает: Gh0stik
Здравствуйте, Red Spirit!

Предлагаю Вам хранить содержимое списка в потоке. После очищения объекта загружать список из файла.

Процедура которая создает файл с содержимым ListView1:
procedure TForm1.Button1Click(Sender: TObject);
var f:tfilestream;
begin
if FileExists('c: emplistv.ttt') then
begin
f:=TFileStream.Create('c: emplistv.ttt',fmOpenWrite);
f.WriteComponent(ListView1);
f.Free;
end
else
begin
f:=TFileStream.Create('c: emplistv.ttt',fmCreate);
f.WriteComponent(ListView1);
f.Free;
end;
ListView1.Items.Clear;
end;


Загружаем данные обратно в ListView1:
procedure TForm1.Button2Click(Sender: TObject);
var f:tfilestream;
begin
if FileExists('c: emplistv.ttt') then
begin
f:=TFileStream.Create('c: emplistv.ttt',fmOpenRead);
ListView1.Clear;
f.ReadComponent(ListView1);
f.Free;
end;
end;


Конечно же не трудно это все объеденить в одну процедуру.

Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 26.03.2007, 12:27
Оценка за ответ: 5
Комментарий оценки:
Очень хороший пример, мне как раз надо было потом записывать все в файл! )


Вопрос № 79.761
Здравствуйте.

Необходимо распечатать таблицу. В таблице текст. Компонент и способ не столь важны, нужно распечатать с наименьшим участием пользователя.
Отправлен: 26.03.2007, 10:20
Вопрос задал: IKS (статус: 4-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: sir henry
Здравствуйте, IKS!
Если речь идет о печати форматированного в таблицу текста на принтер, то я обычно использую HTML для этих целей. Выглядит это примерно так:
См. приложение.
В последней строчке сформированный файл открывается, мы на него любуемся и если все правильно, то жмем кнопку "Печать" на панели инструментов браузера.

Приложение:

Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 26.03.2007, 12:09
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Отличный способ


Вопрос № 79.762
Доброго дня уважаемые експерты. Мне надо после исполнения запроса выбраные даные експортировать в DBF файл. Запрос я запускаю через ADOQuery на базе, которая находиться на MSSQL Server. Через DataSource я записываю результат в DBGrid. Когда я потом пробую с помощью компонента TDBF експортировать в DBF то кодировка текстовых полей - Win. А мне нужно DOS. Жду ответа. С уважением Ю.Фадеев.

Приложение:

Отправлен: 26.03.2007, 10:22
Вопрос задал: Фадеев Юрий (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Pavel Maltsev
Здравствуйте, Fadeev Yurij!

А Ваша функция strtooem не работает? Прикладываю функцию перевода из кодировки WIN в кодировку DOS.

Если и это не поможет, то нужно взглянуть на заголовок DBF файла. 30-й символ от начала файла должен иметь код - 0x26(38) - который означает что кодировка DOS.

Приложение:

Ответ отправил: Pavel Maltsev (статус: 3-ий класс)
Ответ отправлен: 26.03.2007, 11:25
Оценка за ответ: 3

Отвечает: Маренич Владимир
Здравствуйте, Fadeev Yurij!
В TDBF есть событие OnTranslate(Dbf: TDbf; Src, Dest: PAnsiChar; ToOem: Boolean);
В обработчике этого события напишите:
begin
CharToOem(Src, Dest);
Result:=0;
end;
Ответ отправил: Маренич Владимир (статус: Студент)
Ответ отправлен: 26.03.2007, 12:28
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо, сразу заработало.


Вопрос № 79.848
Здравствуйте, уважаемые эксперты!
Есть проект, в котором несколько активных окон. Как сделать, чтобы они пристыковывались друг к другу (ну прямо-таки "примагничивались") и к панели задач?
Отправлен: 26.03.2007, 20:48
Вопрос задал: Win2k (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Win2k!
Поискал все-таки по "прилипание окон Delphi". Выдал кучу сайтов с одной и той же статьей. Похоже, все-таки придется вам использовать WinAPI и обработку сообщений как в си =)
---------
Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Специалист)
Ответ отправлен: 27.03.2007, 12:25
Оценка за ответ: 5
Комментарий оценки:
Да, примерчик по той ссылочке неплохой, окна прилипают к краям экрана. Но как сделать, чтобы они прилипали друг к другу?
Дело в том, что это всего лишь ма-а-аленький атрибут к моему проекту, поэтому переделывать проект под С++ бессмыленно.
Но все же спасибо за пояснения и отличия синтаксиса Delphi и C++, ведь когда-нибудь придется учить C++ :)

Отвечает: василий1
Здравствуйте, Win2k!

по вашей теме поможет поиск с ключевыми словами "липкие окна"

В JEDI VCL есть соответствующий компонент.
object Form1: TForm1
...
object JvFormMagnet1: TJvFormMagnet
Active = True
MainFormMagnet = True
Left = 79
Top = 161
end
end
object Form2: TForm2
..
object JvFormMagnet1: TJvFormMagnet
Active = True
FormGlue = False
MainFormMagnet = True
Left = 164
Top = 133
end
end
на той форме, которая должна открепляться, нужно установить у TJvFormMagnet
FormGlue := False.

ниже сам компонент
http://forum.sources.ru/index.php?act=Attach&type=post&id=1072456
Ответ отправил: василий1 (статус: 1-ый класс)
Ответ отправлен: 27.03.2007, 12:36
Оценка за ответ: 3
Комментарий оценки:
Короче, ссылка нерабочая, юнит не компилируется, ничего не работает.


Вопрос № 79.893
Помогите пожалуйста. Уменя на форме Image1, Image2 и Image3 (чорнобелый bmp). Как сделать попиксельное спавнение чтобы определить, кто больше похож на Image1, Image2 или Image3?
Отправлен: 27.03.2007, 04:02
Вопрос задал: Костенко Игорь Викторович (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Кулаков Антон Сергеевич /SandroNec
Здравствуйте, Костенко Игорь Викторович!

В приложении код. В нем есть три image`а (image1, image2, image3), 2 progressbar`а (prog1, prog2) и кнопка. Все картинки одинакового размера (в моем случае 64 на 64, можете заменить на другой), при нажатии на кнопку происходит попиксельное сравнение image1 с остальными. имеются две переменные pok1 и pok2 в которые записывается насколько идентичны картинки. после каждого сравнения результат выводится на progressbar`ы.

Удачи в нашем нелегком деле.

Приложение:

---------
Настоящий программист на вопрос - "можешь ли ты это сделать", всегда ответит - "да", а потом подумает как

Ответ отправил: Кулаков Антон Сергеевич /SandroNec (статус: 4-ый класс)
Ответ отправлен: 27.03.2007, 05:59
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо. Все отлично работает и главное просто.


Вопрос № 79.895
Народ, привет! Есть проблема с использование компонента idHTTP. Дело в том, что он никак не хочет работать через прокси. Все настройки в ProxyParams и Request забивались и не раз, настройки верные. Также пробывал обрабатывать событие ProxyAuthorization. Чего делать то? Или может с другим чем-нибудь пробывать?

Кстати, я так понял что все функции и процедуры idHTTP (типа Get,Post,DoRequest) возвращают ответ запрошенного URL. а можно ли просто послать запрос и не получать этот ответ, все таки трафик же...

Жду ответов, "да сохранит Вас F2, да поможет Вам F1" =)
Отправлен: 27.03.2007, 04:20
Вопрос задал: Baduin (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sosedov
Здравствуйте, Baduin!

Вы не прислали кусочек неработающего кода... ну да ладно, в приложении смотрите пример написанного мною консольного приложения, использующего idhttp с прокси (IP и порт вымышленные). В Delphi 7 работает.

Не понял про экономию траффика. Вы хотите Get без ответа? По-моему, так не бывает. Если не трудно, задайте новый вопрос и подробнее опишите Ваши желания!

Удачи!

Приложение:

Ответ отправил: Sosedov (статус: 1-ый класс)
Ответ отправлен: 27.03.2007, 08:19


Вопрос № 79.902
Добрый день!
Возникла небольшая проблема с программой.
Из прграммы перенашу данные в Exsel. Использую библиотеку OLE. Все работало хорошо, на разных машинах. Проблема возникла когда запустил на машине с установленным Office 2003. Выдает ошибку что невозможно открыть.
Подскажите с чем это связанно и как это можно испраивть.
Заранее всем спасибо.
Отправлен: 27.03.2007, 07:41
Вопрос задал: AllexZ (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Dragon
Здравствуйте, AllexZ!
В приложении готовый модуль, работает на Office 2003. В программе можно открыть любой dbf файл и экспортировать в Excel. В листинге есть некоторые комментарии. Процесс обработки информации отображается в ProgressBar-е.
Удачи!

Приложение:

Ответ отправил: Dragon (статус: 1-ый класс)
Ответ отправлен: 27.03.2007, 08:22
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо за пример программы.
Разбиремся в чем отличея, исправлю в своей программе.


Вопрос № 79.910
Эксперты, помогите выйти из тупика. В Edit (или в любой другой компонент пригодный для ввода текста) необходимо вводить символы в UNICode например символ с кодом 1203(dec) 04b3(hex).
На событии OnKeyDown пишу:
if (Key = 219) and (ssCtrl in Shift)
then SendMessage(edtName.Handle, WM_CHAR, 1203, 0);
т.е. по нажатию Ctrl+х должен выводиться символ с кодом 1203 - чего однако не происходит.
Подскажите как быть !
Отправлен: 27.03.2007, 08:49
Вопрос задал: Sniffer (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: _Alex_
Здравствуйте, Sniffer!
Код работает на ура!!!
Проверте раскладку клавиатуры, х нужно русскую нажимать :)
X английская и Х русская с точки зрения Win разные буквы.

---------
Век живи - век учись
Ответ отправил: _Alex_ (статус: 1-ый класс)
Ответ отправлен: 27.03.2007, 10:05
Оценка за ответ: 3
Комментарий оценки:
Ну и что же там нормально работает ? Выводиться совсем не тот символ который нужен. По идее должен вывести х с нижним хвостиком.... А выводит i...


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

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

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

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

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


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


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

В избранное