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

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


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


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

Выпуск № 283
от 02.02.2004, 02:10

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


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

Boriss
Статус: Профессиональный
Общий рейтинг: 150.59
URL: Программирование на Паскале
[Подробней >>]
Pawel
Статус: Опытный
Общий рейтинг: 164.75
[Подробней >>]
sir henry
Статус: Профессиональный
Общий рейтинг: 159.08
[Подробней >>]
 
THE_PRO
Статус: Опытный
Общий рейтинг: 137.36
URL: THE_PRO
[Подробней >>]


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

Вопрос № 1277. Доброго времени суток! Некая процедура получает в качестве параметра объект типа TImage и, учитывая ... (ответов: 3)
Вопрос № 1278. Хорошей Вам ОС! Дополнение к вопросу 1277. To Boriss: Strech установлено в true. Если можно, подробн... (ответов: 2)
Вопрос № 1279. Пишу(или страраюсь писать) под Delphi 7/Interbase server 6 Я использую компоненты с палитры InterBas... (ответов: 1)
Вопрос № 1280. всем привет! по поводу вопроса 1268, надпомню: мне нужно загрузить в Memo1 нетипизированный файл. я ... (ответов: 3)
Вопрос № 1281. Доброе время суток! Попробую еще раз: Итак Image:TImage; Bitmap:TBitmap; Rec:Trect; Картинка рисуетс... (ответов: 4)
Вопрос № 1282. здравствуйте эксперты. дополнение к вопросу №1271 процедура Procedure create_doc(file1,file2:string;... (ответов: 2)
Вопрос № 1283. здравствуйте эксперты. дополнение к вопросу №1271 процедура Procedure create_doc(file1,file2:string;... (ответов: 3)

Вопросов: 7, ответов: 18


 Вопрос № 1277

Доброго времени суток!
Некая процедура получает в качестве параметра объект типа TImage и, учитывая ширину и высоту полученного объекта, создает некий рисунок. Этот рисунок выводится на данный TImage с помощью StretchDraw. Все работает прекрасно до тех пор, пока я не меняю размер формы, на которой расположен этот TImage. После изменения размера, естественно, меняется значение свойств Width и Height, однако, как оказалось, реальный размер остается прежним. :(( Т.е. к примеру, в начале имеем поле 210х210, увеличивая форму получаем 300х300 выводя на (0,0,300,300) - видим лиш фрагмент рисунка; выводя на (0,0,210,210) - получаем полноценный рисунок. Но, предпологается, что я не знаю начального размера, а Width и Height выдают 300. Как здесь быть? Может я просто не вижу часть поля? Тогда как его заставить менять размеры только в пределах видимости?



Вопрос отправлен: 28.01.2004, 11:20
Отправитель: Vitally

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

Отвечает Boriss

Приветствую Вас, Vitally!
Ну ессно, что один раз было выполнено натягивание, то потом еще раз натягивать надо. Проще всего установите Stretch:=True; А иначе придется пересчитывать StretchBlt

Ответ отправлен: 28.01.2004, 17:37
Отправитель: Boriss


Отвечает Pawel

Здравствуйте, Vitally!
Timage привязон к форме?
Проводится перерисовка Timage после изменения размеров формы?

Ответ отправлен: 28.01.2004, 18:43
Отправитель: Pawel


Отвечает sir henry

Здравствуйте, Vitally!
Попробуйте поставить:
TImage.Align:=alClient; {т.е. размер TImage всегда равен размеру клиентской части формы}

Ответ отправлен: 29.01.2004, 09:25
Отправитель: sir henry


 Вопрос № 1278

Хорошей Вам ОС!
Дополнение к вопросу 1277.
To Boriss:
Strech установлено в true. Если можно, подробнее. И откуда берется число 300 и как получить первоночальный размер (и нужно ли это. Может есть другие пути?!)
To Pawel:
Да, TImage привязан к форме. После изменения размера происходит перерисовка и растягивание.



Вопрос отправлен: 28.01.2004, 22:44
Отправитель: Vitally

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

Отвечает Boriss

Доброе время суток, Vitally!
300? Это у Вас было 300 в 1277! Начальный размер получить можно визуально, Stretch программно установите в FALSE. А можно прочитать из файла. Там у всех форматов есть заголовочные части, где есть такая информация.
Вы у меня спрашиваете, нужно ли получить первоначальный размер? :)) - Таки это Вам решать! Другие пути чего? Уточните, пожалуйста. Обязательно найдем :))
Далее. Можно установить Aling:=alClient; И, обрабатывая событие OnResize для формы, вызывать StretchBlt.

Ответ отправлен: 29.01.2004, 12:11
Отправитель: Boriss


Отвечает THE_PRO

Здравствуйте, Vitally!


Ответ отправлен: 29.01.2004, 13:07
Отправитель: THE_PRO


 Вопрос № 1279

Пишу(или страраюсь писать) под Delphi 7/Interbase server 6
Я использую компоненты с палитры InterBase, не до конца еще с ними разобрался.
Задача такая : пишу количественно-материальный учет на 10 пользователей(минимум).
Две таблицы в 1 базе мне необходимо связать(с этим проблем особых нет) и через определенное количество секунд обновлять данные (таболицы "товары" и "серии").
Объемы : "товары" - 10202 записей, "серии" - свыше 90000 записей.
Обновляю через Timer, помещенный на Datamodule, который периодически делает :
-------------------------------------
var TmpNumTov: Integer
.....
With QrTovar do
begin
close;
open;
locate('num_tov',tmpNumTov,[]);
end;
--------------------------------------
также примерно и с сериями
При интерактивном поиске (с помощью Locate) - тормозит ужасно(из-за таймера). Без него работает нормально.
--------------------------------------
Посоветуйте как лучше обновлять данные.
--------------------------------------
С компонентом IbTransaction и IbDatabase
не особо разобрался, возможно здесь кроется
прекрасная для меня разгадка.




Вопрос отправлен: 29.01.2004, 12:15
Отправитель: jiny (zhas-trz@tarazinfo.kz)

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

Отвечает sir henry

Доброе время суток, jiny!
Я так понял, что у Вас компонент TQuery.
Обновлять его можно так:
TQuery.Refresh;
Функция Locate работает таким образом:
Если есть индекс для искомого поля, то используется этот индекс. Если такого индекса нет, то Locate ищет и так, но время поиска заметно увеличивается :). Так что совет - используйте индекс по полю поиска. Составной индекс тоже не следует использовать, т.к. это увеличивает время поиска.
Обновление (Refresh) лучше всего применять не внутри обработки события таймера, а при каком либо значимом действии над таблицей. Например:
1. После редактирования существующей записи;
2. После добавления новой записи;
3. После удаления записи;
В этом случае программа не будет делать бессмысленные обновления, когда обновлять то в сущности и нечего.

Ответ отправлен: 29.01.2004, 13:28
Отправитель: sir henry


 Вопрос № 1280

всем привет!
по поводу вопроса 1268, надпомню:
мне нужно загрузить в Memo1 нетипизированный файл.
я открываю файл побайтно, но это очень медленно.
TFileStream и tmemo.lines.loadfromfile('hz')
загружают файл не_полностью, только заголовок MZ
(если пытаюсь загрузить EXE файл). задача простая,
но как её решить?



Вопрос отправлен: 29.01.2004, 16:31
Отправитель: Zensor (ZASM@MAIL.RU)

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

Отвечает Boriss

Здравствуйте, Zensor!
А как BlockRead на Ваш вкус? Там точно никакого анализа быть не может, и работать по ДОСовски быстро. Вы пробовали?

Ответ отправлен: 29.01.2004, 16:58
Отправитель: Boriss


Отвечает THE_PRO

Добрый день, Zensor!
Ti xochesh zaqruzit eqo bayti ili chto?...???

Ответ отправлен: 29.01.2004, 16:56
Отправитель: THE_PRO


Отвечает Pawel

Добрый день, Zensor!
TFileStream ОБРАБАТЫВАЕТ любые фаилы.
Другое дело если не все символы корректно обрабатываются memo. Нужно или выкидовать командные символы(по коду)или
использовать другой компонент.

Ответ отправлен: 30.01.2004, 19:01
Отправитель: Pawel


 Вопрос № 1281

Доброе время суток!
Попробую еще раз:
Итак Image:TImage; Bitmap:TBitmap; Rec:Trect;
Картинка рисуется на Bitmap (не загружается из файла, а рисуется LineTo...).
Rec.Top:=0;
Rec.Left:=0;
Rec.Right:= Image.Width;
Rec.Bottom:= Image.Height;
Далее Bitmap выводится на Image: Image.Canvas.StretchDraw(Rec,Bitmap).
При запуске программы Image.Width=Image.Height=210. После нажатия пипочки "Развернуть" Image.Width=Image.Height=300. А область "видимости" остается 210. Т.о. на Image видно только увеличенную левую верхнюю часть от Bitmap.
Как cделать, чтобы размер видимой области Image совпадал с самим размером Image? Или как получить размер видимой области. Или как запретить увеличивать размер за пределы видимой области? И почему так происходит: Визуально рисунок стал больше, а значение видимой области остались прежними - 210?????



Вопрос отправлен: 29.01.2004, 18:05
Отправитель: Vitally

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

Отвечает sir henry

Доброе время суток, Vitally!
После нажатия на кнопку "Развернуть" нужно сделать перерисовку, т.е. повторить еще раз:
"Rec.Top:=0;
Rec.Left:=0;
Rec.Right:= Image.Width;
Rec.Bottom:= Image.Height;
Далее Bitmap выводится на Image: Image.Canvas.StretchDraw(Rec,Bitmap)."
в соответствии с новыми значениями Image.Width и Image.Height.

Ответ отправлен: 30.01.2004, 04:19
Отправитель: sir henry


Отвечает THE_PRO

Здравствуйте, Vitally!
Image1.Stretch:=true;

Ответ отправлен: 30.01.2004, 11:50
Отправитель: THE_PRO


Отвечает Boriss

Здравствуйте, Vitally!
Я делал просто Picture.LoadFromFile и никаких проблем не видел потом

Ответ отправлен: 30.01.2004, 16:02
Отправитель: Boriss


Отвечает Pawel

Здравствуйте, Vitally!
Необходима повторная перерисовка(я об этом уже писал) или
перезагрузка рисунка.

Ответ отправлен: 30.01.2004, 18:57
Отправитель: Pawel


 Вопрос № 1282

здравствуйте эксперты. дополнение к вопросу №1271
процедура Procedure create_doc(file1,file2:string;paramstr:pchar;kod:word);описана в unit dservice; (кто это изобрёл я не знаю (для эксперта sir henry))есть такое описание
Procedure create_doc(file1,file2:string;paramstr:pchar;kod:word);
// Процедура создание простого документа на основе
// подстановки в тексте текстовых строк на место строк-указателей.
// file1 - строка, содержащая имя текстового файла-шаблона.
// Файл-шаблон - обычный DOC или RTF текст, содержащий обычные текстовые
// строки (определяемые программистом), которые используются в качестве
// строк-указателей для последующей замены на смысловой текст.
// file2 - имя выходного файла.
// paramstr - строка, определяющая способ заполнения шаблона текстовой информацией.
// Например, если переменная paramstr содержит строку '#1|первая строка|#2|вторая строка',
// то выполнение процедуры
// create_doc('c:hablon.rtf','c:Документ.rtf','#1|первая строка|#2|вторая строка',1);
// приведет к замене в тексте "#1" и "#2" на текст "первая строка" и "вторая строка".
// kod - способ отображения текста (0,1,2,3)



Вопрос отправлен: 30.01.2004, 00:41
Отправитель: евгений

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

Отвечает Boriss

Здравствуйте, евгений!
И все равно такого модуля у меня нет :)). И где партизаны не скажу

Ответ отправлен: 30.01.2004, 16:52
Отправитель: Boriss


Отвечает Pawel

Доброе время суток, евгений!
Можно не отправлять одинаковые письма?


Ответ отправлен: 30.01.2004, 18:55
Отправитель: Pawel


 Вопрос № 1283

здравствуйте эксперты. дополнение к вопросу №1271
процедура Procedure create_doc(file1,file2:string;paramstr:pchar;kod:word);описана в unit dservice; (кто это изобрёл я не знаю (для эксперта sir henry))есть такое описание
Procedure create_doc(file1,file2:string;paramstr:pchar;kod:word);
// Процедура создание простого документа на основе
// подстановки в тексте текстовых строк на место строк-указателей.
// file1 - строка, содержащая имя текстового файла-шаблона.
// Файл-шаблон - обычный DOC или RTF текст, содержащий обычные текстовые
// строки (определяемые программистом), которые используются в качестве
// строк-указателей для последующей замены на смысловой текст.
// file2 - имя выходного файла.
// paramstr - строка, определяющая способ заполнения шаблона текстовой информацией.
// Например, если переменная paramstr содержит строку '#1|первая строка|#2|вторая строка',
// то выполнение процедуры
// create_doc('c:hablon.rtf','c:Документ.rtf','#1|первая строка|#2|вторая строка',1);
// приведет к замене в тексте "#1" и "#2" на текст "первая строка" и "вторая строка".
// kod - способ отображения текста (0,1,2,3)
спасибо.



Вопрос отправлен: 30.01.2004, 00:42
Отправитель: евгений

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

Отвечает sir henry

Здравствуйте, евгений!
Поскольку в моем Дельфи7 нет такого модуля, то еще пара нескромных вопросов :)))
1. В состав какого Дельфи он входит?
2. Если это нестандартный модуль, то необходимо указать источник его получения. Обычно возле заголовка Unit пишется для чего модуль предназначен и кто его изобрел.
Извините, если разочаровал Вас своим вопросом, но эксперты тоже не все на свете знают :))).

Ответ отправлен: 30.01.2004, 04:33
Отправитель: sir henry


Отвечает Boriss

Приветствую Вас, евгений!
Вы можете задать вопрос и четыре раза, но у меня Delphi 7 - и нет в нем такого модуля. Написали бы хотя б откуда взяли таковой dservice. Явно, ВЫ скачали какой-то компонент, но не описание к нему
Смысл строк понятен, но гадать не хочется ;))

Ответ отправлен: 30.01.2004, 16:43
Отправитель: Boriss


Отвечает Pawel

Доброе время суток, евгений!
Такого модуля(dservice) нет в delphi 1-7;

Ответ отправлен: 30.01.2004, 18:54
Отправитель: Pawel



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (24)
C / C++ (15)
Perl (2)
Builder / Delphi (17)
Pascal (18)
Basic / VBA (7)
Java / JavaScript (3)
PHP (11)
Криптография (4)
WinAPI (10)
Радиоэлектроника (5)
Пользователю
Windows 95/98/Me (46)
Windows NT/2000/XP (62)
"Железо" (36)
Поиск информации (18)
Администратору
Windows NT/2000/XP (34)
Linux / Unix (11)
Юристу
Гражданское право (16)
Семейное право (10)
Трудовое право (12)
КоАП (11)

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




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


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

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

В избранное