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

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


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

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

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

Выпуск № 324
от 14.12.2005, 18:12

Администратор:Калашников О.А.
В рассылке:Подписчиков: 257, Экспертов: 52
В номере:Вопросов: 5, Ответов: 12


Вопрос № 31092: Здравствуйте! Подскажите пожалуйста как из ячейки StringGrid'a сделать многострочный редактор типа TMemo? Заранее всех благодарю....
Вопрос № 31114: Здравсвуйте! Подскажите пожалуйста.... Нужно создать форму с рисунком кот. имеет фон определенного цвета и на которой бы создавались окружности, залитые определенным цветом. 1) как задать цвет канвы? 2) как залить окружности? 3) к...
Вопрос № 31125: Всем привет! У меня есть формула количество слагаемых в которой зависит от того сколько их ввели на Form. Напирмер: ввели 4 - кол-во слагаемых четыре, ввели 8 - кол-во слагаемых 8. Как организовать такой ввод?...
Вопрос № 31126: Подскажите пожалуйста компанент к Delphi 7-9 (желательно бесплатный) для создания оформления(СКИНОВ) к прогаммам....
Вопрос № 31143: Что такое Interface в COM. Пажалуйста дайти меня расширенной ответ. Спасибо....

Вопрос № 31.092
Здравствуйте! Подскажите пожалуйста как из ячейки StringGrid'a сделать многострочный редактор типа TMemo?
Заранее всех благодарю.
Отправлен: 08.12.2005, 18:05
Вопрос задал: Djkr (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Ataman N. N.
Здравствуйте, Кулешев Денис Витальевич!
Я делал следующим образом.
1. Создал скрытый TMemo.
2. При выделении ячейки этот мемо показывал (трудности в расчете Left и Top), если в ячейкебыл какой-то текст, то заносил его в мемо.
3. При нажатии Enter в мемо переносил текст из мемо в ячейку, очищал и скрывал мемо.
Все!
Работало нормально.
Ответ отправил: Ataman N. N. (статус: 3-ий класс)
Отправлен: 08.12.2005, 21:07


Вопрос № 31.114
Здравсвуйте!
Подскажите пожалуйста....
Нужно создать форму с рисунком кот. имеет фон определенного цвета и на которой бы создавались окружности, залитые определенным цветом.
1) как задать цвет канвы?
2) как залить окружности?
3) как задать толщину линии окружности?
Отправлен: 09.12.2005, 01:08
Вопрос задала: Артемова Марина (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Артемова Марина!
1) TCanvas.Brush.Color:=Выбраный_Вами_цвет;
2) TCanvas.FloodFill(X, Y: Integer; Color: TColor; FillStyle: TFillStyle);
3) TCanvas.Pen.Width:=Толщина_в_пикселях;
Ответ отправил: sir henry (статус: Академик)
Отправлен: 09.12.2005, 05:05

Отвечает: Ataman N. N.
Здравствуйте, Артемова Марина!
1) Canvas.Brush.Color := <нужный вам цвет>;
2)Canvas.FloodFill(...);//x и y должны попадать в окружность
3)Canvas.Pen.Width := <толщина типа integer>;
Сначала нужно установить толщину пера (линии), а потом рисовать окружность (линию, примоугольник).
То же касается и заливки - сначала устанавливаем цвет, а потом заливаем.
Ответ отправил: Ataman N. N. (статус: 3-ий класс)
Отправлен: 10.12.2005, 00:56
Оценка за ответ: 5


Вопрос № 31.125
Всем привет!
У меня есть формула количество слагаемых в которой зависит от того сколько их ввели на Form.
Напирмер: ввели 4 - кол-во слагаемых четыре, ввели 8 - кол-во слагаемых 8. Как организовать такой ввод?
Отправлен: 09.12.2005, 04:58
Вопрос задал: Lazut4ik (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Lazut4ik!
Вводите их в поле Edit. Присваивание значений будете делать в событии OnKeyPress на нажатие клавиши ENTER. Ведете подсчет количества и как только оно достигнет требуемого, делаете Edit неактивным.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 09.12.2005, 05:09

Отвечает: Tsechoev Bagaudin
Здравствуйте, Lazut4ik!
Очень просто, кладется или Edit или SpinEdit, что лучше для ограничения ввода не числовых данных. На событие OnExit ставите обработку значения SpinEdit. Теперь нужно куда-то вводить данные для самих слагаемых. Самый простой способ бросить StringGrid и указывать количество строк в ней при обработке того же события OnExit для SpinEdit. Более изящно можно решить данную задачу, положив только StringGrid и добавляя автоматом строку при каждом нажатии клавиши Tab до тех пор пока не нажата клавиша Enter. Потом на тоже событие OnExit для StringGrid можно воткнуть саму формулу и получить количество строк т.е. слагаемых. Можно и более красиво и продвинутей, но это долгий разговор.
Удачи!
---------
Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: Студент)
Отправлен: 09.12.2005, 11:17

Отвечает: Golden Spider
Здравствуйте, Lazut4ik!
Очень просто для начала в edit1 вводите кол-во слагаемых n.
Затем создаете динамический массив и через цикл записываете заначения в него:

var a:array of integer;
n,i:integer;
begin
n:=strtont(edit1.text);
setlength(a,n);
for i:=-1 to n do
begin
label1.caption:='Введите '+inttostr(i)+' элемент';
a[i]:=strtoint(edit1.text);
end;
{Действия с массивом}
a:=nil;
end;

Ну вот. Только здесь нет проверки на правильность введенного чиcла, но это вы сможете сделать сами.
---------
Знания ничто! Хорошие знания Всё!
Ответ отправил: Golden Spider (статус: 3-ий класс)
Отправлен: 09.12.2005, 16:02

Отвечает: Schmak
Здравствуйте, Lazut4ik!
C помощью обычного edit'а. Сначала, например из одного едита считываете сколько слагаемых, затем из другого поочерёдно сами слагаемые. Как только кол-во введённых слагаемых становится равным необходимому кол-ву выполняем формулу. Прммер смотрите в приложении.

Приложение:

---------
Не всё то Windows, что висит!

Ответ отправил: Schmak (статус: Студент)
Отправлен: 09.12.2005, 17:04


Вопрос № 31.126
Подскажите пожалуйста компанент к Delphi 7-9 (желательно бесплатный) для создания оформления(СКИНОВ) к прогаммам.
Отправлен: 09.12.2005, 06:21
Вопрос задал: Dico (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: sir henry
Здравствуйте, Dico!
Пожалуйста, сколько хотите:
http://www.torry.net/quicksearchd.php?String=skin&Title=Yes
Ответ отправил: sir henry (статус: Академик)
Отправлен: 09.12.2005, 09:48

Отвечает: Denisss
Здравствуйте, Dico!
AlphaControls (для русско-говорящих бесплатно, но без исходников)
http://www.alphaskins.com/index_rus.php
Пароль от архива ищите в тексте.
Ответ отправил: Denisss (статус: Специалист)
Отправлен: 10.12.2005, 11:56


Вопрос № 31.143
Что такое Interface в COM. Пажалуйста дайти меня расширенной ответ.
Спасибо.
Отправлен: 09.12.2005, 13:07
Вопрос задал: E.T.T (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Tsechoev Bagaudin
Здравствуйте, E.T.T!
Интерфейс в COM имеет такое же прямое определение, как определение этого слова вообще. Интерфейс (в COM, равно как и в других такого рода технологиях - CORBA, Java, .NET) ОПИСЫВАЕТ методы и параметры, к которым можно получить доступ из других приложений. Я написал слово "описывает", потому что реализациия идет внутри класса, а не интерфейса. На самом деле здесь можно долго муторить эту тему, поэтому лучше всего будет если почитать умную книжку, у меня есть в pdf формате "Основы COM". Пиши на b.tsechoev@gmail.com вышлю.
Удачи!
---------
Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: Студент)
Отправлен: 09.12.2005, 14:29

Отвечает: sir henry
Здравствуйте, E.T.T!
Расширеный - это книжку покупайте, а коротко вот:
Интерфейс - это спецификация связи между объектом, который находится в сервере (например Word - это сервер, в котором расположено множество объектов: документы, таблицы и т.п.) и программой-клиентом.
Интерфейс просто так, не привязаный к какому-то объекту, содержит только кость без мяса, т.е. он может существовать и вызываться кем-либо. На этой основе строят интерфейс реального объекта, например вордовского документа, добавляя собственные свойства, как в класс.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 09.12.2005, 15:16

Отвечает: Ujin Antikvar
Здравствуйте, E.T.T!

-------------------------------
СОМ-интерфейс
-------------------------------
COM проводит фундаментальное различие между определением интерфейса и его реализацией. Это свойство СОМ аналогично подходам, принятым в OSF DCE RPC и CORBA. По степени абстракции СОМ ближе к первому из них, так как CORBA менее требовательна к неизменности и уникальности интерфейсов во времени и пространстве.

В понимании СОМ интерфейс – это контракт, состоящий из списка связанных прототипов функций, чье назначение определено, а реализация – нет. Эти прототипы функций эквивалентны абстрактным базовым классам С++, то есть классам, имеющим только виртуальные методы, описания без реализации. Определение интерфейса описывает функции-члены интерфейса, называемые методами, типы их возвращаемого значения, число и типы их параметров, а также описывает, что они, собственно, должны делать. Напрямую с интерфейсом не ассоциировано никакой реализации.

Реализация интерфейса (interface implementation) – это код, который программист создает для выполнения действий, оговоренных в определении интерфейса. Реализации интерфейсов, помещенные в COM-библиотеки или exe-модули, могут использоваться при создании объектно-ориентированных приложений. Разумеется, программист может игнорировать эти реализации и создать собственные. Интерфейсы ассоциируются с CoClass’ами. Чтобы воспользоваться реализацией функциональности интерфейса, нужно создать экземпляр объекта соответствующего класса, и запросить у этого объекта ссылку на соответствующий интерфейс.

Например, для описания взаимодействия с некоторым абстрактным стеком можно определить интерфейс IStack (в COM стало доброй традицией начинать названия интерфейсов с «I»). Этот интерфейс может содержать два метода, скажем, Push и Pop. Вызов метода Pop возвращает значения, заложенные до этого методом Push в стек, но в обратном порядке. Это определение интерфейса не говорит, как функции будут реализованы в коде. Один программист может реализовать стек как массив, а методы Push и Pop – как методы доступа к этому массиву. Другому же взбредет в голову использовать связанный список и соответствующую реализацию методов. Независимо от конкретной реализации методов, представление в памяти указателя на интерфейс IStack, и, соответственно, его использование клиентом полностью специфицируется определением интерфейса.

Простые объекты могут поддерживать только один интерфейс. Более сложные объекты, как правило, поддерживают несколько интерфейсов. Это свойство позволяет реализовать полиморфизм на уровне компонентной модели.

Слово «интерфейс» используется в COM не в том смысле, что в С++. Интерфейс в С++ ссылается на все функции, поддерживаемые классом. COM-интерфейс ссылается на предварительно оговоренную группу связанных функций, реализуемых COM-классом, но не обязательно на ВСЕ функции, поддерживаемые классом.

В CORBA на сегодня не реализована поддержка множества интерфейсов одним объектом. Это приводит к тому, что CORBA-интерфейс практически определяет класс объекта. СОМ же, наоборот, поддерживает реализацию нескольких интерфейсов в одном объекте, и поэтому требует отдельного определения класса объекта. В третьей версии спецификации CORBA должна появиться поддержка множества интерфейсов для одного объекта, что должно еще больше сблизить эти технологии.

Java-программистам концепция СОМ-интерфейсов будет понятна сразу, без объяснений – в Java интерфейсы выглядят точно так же, как в COM.

Для описания интерфейсов в COM, как и в CORBA, применяется язык IDL. В отличие от CORBA использование IDL не обязательно (СОМ является практически бинарным стандартом).
Статтья взята из DelphiWorld.

Если хочешь могу дать хорошие книги по COM-технологиям.
Пиши мне на мыло: arbuznikov@matrix.odessa.ua

C Уважением,
Ujin Antikvar!!!
---------
"Будущее принадлежит тем, кто верен своей мечте" - Элеонора Рузвельт
Ответ отправил: Ujin Antikvar (статус: 4-ый класс)
Отправлен: 09.12.2005, 21:51


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

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

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

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

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


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


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

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

В избранное