Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (все версии) - часть 3

Автор: Arvur
Дата сообщения: 21.04.2007 23:45
GoldFire
В этой теме обсуждается сама среда разработки. Точнее - "вопросы, не связанные с узкой направленностью"

Цитата:
прошу помочь с написаниями двух заданий в этом языке программирования:

Вам скорее всего сюда... Ну или по второй ссылке из моей подписи
Если хочется бесплатно - видимо, имеет смысл создавать отдельный топик, по аналогии с вот этим.
Автор: onyxhall
Дата сообщения: 23.04.2007 04:44
Подскажите пожалуйста как правильно реализовать множественное наследование. Понятно, что через интерфейсы, но как конкретно?
Допустим имеются классы TClass1, TClass2 и TMyClass. TClass1 умеет взаимодействовать только с TClass2. Как сделать так, чтобы TClass1 взаимодействовал с TMyClass и не отличал его от TClass2?
(TMyClass уже унаследован от другого класса)
Автор: makbeth
Дата сообщения: 23.04.2007 05:05
onyxhall
Нужно описать интерфейс (например, IClass2), включив в него методы и свойства, посредством которых общаются классы TClass1 и классы TClass2, TMyClass. Далее включить в списки наследования классов TClass2 и TMyClass этот интерфейс.
[more=Подробнее...]

Код:
type
IClass2 = interface
procedure MyMethod;
end;

TClass2 = class (..., IClass2)
procedure MyMethod;
...
end;

TMyClass = class (..., IClass2)
procedure MyMethod;
...
end;

TClass1 = class (...)
procedure SomeWork(SomeClass: IClass2);
end;

procedure TClass1.SomeWork(SomeClass: IClass2);
begin
SomeClass.MyMethod;
end;

procedure Test;
begin
class1.SomeWork(class2);
class2.SomeWork(myclass);
end;

Автор: onyxhall
Дата сообщения: 23.04.2007 05:19
makbeth
Ага, вроде бы понял. Попробую.
Спасибо!
Автор: GreatOne
Дата сообщения: 23.04.2007 10:12
Люди!! Подскажите какой функцией можно записать гиперссылку в документ MS Word ?
Автор: jONES1979
Дата сообщения: 23.04.2007 11:00
GreatOne конкретизируй. Из дельфи? Через OLE? покажи свой код, где не получается добавить гиперссылку. Не мы же его будем за тебя писать
Автор: GreatOne
Дата сообщения: 23.04.2007 11:31
jONES1979

Да из дельфи:
var
Word: Variant;
begin
Word := CreateOleObject('Word.Basic');
with Word do
begin
FileNew('Normal');
Insert('Ýòî ïåðâàÿ ñòðî÷êà'#13);
Insert('Ýòî âòîðàÿ ñòðî÷êà'#13);
InsertHyperlink(); //Выт эта команда не работает у меня
FileSaveAs('c:\temp\test.txt', 3);
end;
end;

InsertHyperlink(); - Вот эта команда не работает у меня, я не знаю че в ней писать - всегда выдает ошибку что мало параметров.
Автор: RostY
Дата сообщения: 23.04.2007 12:43
цитата из вордячего хелпа:

Hyperlink object that represents a new hyperlink added to a range, selection, or document.

expression.Add(Anchor, Address, SubAddress, ScreenTip, TextToDisplay, Target)
expression Required. An expression that returns a Hyperlinks object.

Anchor Required Object. The text or graphic that you want turned into a hyperlink.

Address Optional Variant. The address for the specified link. The address can be an e-mail address, an Internet address, or a file name. Note that Microsoft Word doesn't check the accuracy of the address.

SubAddress Optional Variant. The name of a location within the destination file, such as a bookmark, named range, or slide number.

ScreenTip Optional Variant. The text that appears as a ScreenTip when the mouse pointer is positioned over the specified hyperlink. The default value is Address.

TextToDisplay Optional Variant. The display text of the specified hyperlink. The value of this argument replaces the text or graphic specified by Anchor.

Target Optional Variant. The name of the frame or window in which you want to load the specified hyperlink.



Добавлено:
т.е. делай следующее:

procedure TForm1.Button1Click(Sender: TObject);
var
Word: OleVariant;
begin
Word := CreateOleObject('Word.Application');
Word.Documents.Add('Normal');
Word.ActiveDocument.hyperLinks.Add(Word.Selection.Range,
'http://forum.ru-board.com',
'',
'',
'ру-борд');
Word.Visible := 1;
end;
Автор: GreatOne
Дата сообщения: 23.04.2007 13:28
RostY

Спасибо большое!!
Автор: rs
Дата сообщения: 23.04.2007 17:02
подскажите, пожалуйста, как сделать следующее:

взять текст со всеми атрибутами форматирования из одного конрола типа TRichEdit и программным путём вставить его в начало уже заполненного и тоже отформатированного другого контрола TRichEdit, не затирая при этом содержимое второго контрола

другими словами, результирующий контрол должен содержать "сумму" двух контролов без потери форматирования каждого из них до слияния

простые присваивания RichEdit2.Text:=RichEdit1.Text не проходят - теряется форматирование

RichEdit1.Lines.SaveToStream + RichEdit2.Lines.LoadFromStream - тоже не прокатывают, теряется исходное содержимое второго контрола

зы
в общем-то, на самом деле нужно сделать следующее: из проги на одной рабочей станции передать форматированный rich-текст в прогу на другой рабочей станции (через udp-протокол) и принявшая рабочаяя станция должна втавить полученный форматированный rich-текст в контрол, содержащий полученные ранее второй рабочей станцией форматированные rich-сообщения
Автор: HateYou
Дата сообщения: 23.04.2007 20:38
Помогите с Delphi7, пожалуйста!!!
Я создал интерфейс программы - разместил на форме нужные компоненты...
Всё было нормально до определённых пор: по умолчанию размер формы был нормальный, а вот когда я в запущенной программе развернул форму на весь экран, все компоненты на форме остались на своих прежних местах... Нельзя ли сделать так, чтобы при увеличении размера формы компоненты тоже меняли свой размер и положение пропорционально ей??? Помогите!!!
Автор: OdesitVadim
Дата сообщения: 23.04.2007 21:42
можно. Есть такие свойства как Align Anchors. Поиграйтесь ними.
Автор: HateYou
Дата сообщения: 24.04.2007 22:21
OdesitVadim
Спасибочки!!!
Автор: HekTo
Дата сообщения: 24.04.2007 23:19
Вопрос по D2007: эта зараза у меня при работе периодически начинает выдавать ошибку №1026 (кажется) DCC23 Error: file 'project.drf' not found.

При этом если скомпиленого exe-шника нет, то она его нормально создает, если он есть - новую версию с изменениями в коне не создаёт. Ну и откладкой пользоваться нельзя.

Кто-нибудь знает в чем причина и как избавиться ? Пока приходится полностью перезапускать среду... и что вообще за файлы такие .drf, вроке в дельфи таких никогда не было ?
Автор: OdesitVadim
Дата сообщения: 25.04.2007 00:35
попробуйте ребилд делать Ctrl+F9. Очень часто помогало с подобными проблемами и в младших версиях
Автор: s1n
Дата сообщения: 25.04.2007 10:27
Помогите, не пойму где грабли. Читаю данные из ini файла в ListBox.
Инишник такого вида:
[section]
param=data1
param=data2
param=data3
....
делаю следующим образом:

Код: procedure TForm1.Button1Click(Sender: TObject);
var
IniFile: TIniFile;
begin
if FileExists (GetCurrentDir+'\file.ini') then
begin
IniFile := TIniFile.Create (GetCurrentDir+'\file.INI');
IniFile.ReadSectionValues ('section', ListBox1.Items);
IniFile.Free;
end;
end;
Автор: PowerChute
Дата сообщения: 25.04.2007 10:36
== Удалено ==
Автор: Ang
Дата сообщения: 25.04.2007 13:03
s1n
Если дать значениям в секции разные имена, то и получится что надо. А так берется первое же найденное значение для имени param.
Автор: HekTo
Дата сообщения: 25.04.2007 13:28
OdesitVadim

Цитата:
попробуйте ребилд делать Ctrl+F9. Очень часто помогало с подобными проблемами и в младших версиях

Пробовал, бестолку
Автор: Arvur
Дата сообщения: 25.04.2007 13:51
HekTo
Эээ... А ты не повелся на "Ctrl+F9"? Это вобще-то compile всегда было..
Сделай именно build

Похожая ощибка с drf встречалась еще на Delphi 7 - гуглом искать не пробовал?
Автор: s1n
Дата сообщения: 25.04.2007 13:51
Ang

Цитата:
Если дать значениям в секции разные имена, то и получится что надо.

Так в том то и дело, что разные имена давать нельзя, инишник именно в таком виде используется. Мне же нужно прочитать данные параметры. Другого выхода нет? Почему идет привязка к первому найденному значению?
Автор: Arvur
Дата сообщения: 25.04.2007 13:53
HekTo
Google:
http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.non-technical/2006-12/msg00974.html
Автор: RostY
Дата сообщения: 25.04.2007 14:22
s1n
param надо по-разному называть.
типа

param1=data1
param2=data2
param3=data3
....

a так у тебя та же ситуация, как если б ты написал

a:=1; a:=2; a:=3; и хотел бы иметь все три значения
Автор: Ang
Дата сообщения: 25.04.2007 14:38
s1n

Цитата:
Почему идет привязка

Подсмотрел в исходнике IniFiles.pas.

Цитата:
Другого выхода нет?

Попробуй GetStrings, но тогда надо "руками" разбирать соответствие "имя=значение".
Автор: s1n
Дата сообщения: 25.04.2007 15:02
RostY

Цитата:
param надо по-разному называть.

Да я не создаю этот инишник, я только лишь пытаюсь написать утилитку которая прочитает содержимое ini-файла, без изменений источника. Выходит что через TIniFile этого не сделать?

Ang

Цитата:
Попробуй GetStrings, но тогда надо "руками" разбирать соответствие "имя=значение".

Будем пробовать, если у меня ума хватит .
Автор: Thegodofviruses
Дата сообщения: 25.04.2007 15:32
Народ подскажите пожалуйста!
Возможно ли в 1С Предприятию 8 засунуть приложение написанное на Delphi? Подскажите направление.
Автор: vserd
Дата сообщения: 25.04.2007 16:25
Thegodofviruses
Копай в сторону OLE, COM, ActiveX
Автор: s1n
Дата сообщения: 25.04.2007 16:26
RostY
Ang
Короче я пошел другим путем:

Код: procedure TForm1.Button1Click(Sender: TObject);
var
F : System.TextFile;
s: string;
begin
if FileExists (GetCurrentDir+'\file.ini') then
begin
ListBox1.Clear;
AssignFile(F, GetCurrentDir+'\file.ini');
Reset(F);
while not SeekEof(F) do
begin
Readln(F, s);
if Copy(s, 1, 5) = 'param' then
ListBox1.Items.Add(s);
end;
CloseFile(F);
end;
end;
Автор: HekTo
Дата сообщения: 25.04.2007 18:52
Arvur
Спасибо! Буду теперь все перебирать
Автор: Thegodofviruses
Дата сообщения: 26.04.2007 07:06
vserd
Спасибо а не подскажешь хорошие книжки в эту сторону?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: 1С: Конвертация данных 2.0


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.