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

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


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

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

Выпуск № 745
от 26.02.2007, 20:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 441, Экспертов: 67
В номере:Вопросов: 18, Ответов: 35


Вопрос № 76165: Доброго времени суток, уважаемые эксперты! Подскажите, пожалуйста, как извлечь из файла exe или dll иконку и сохранить ее в файл? Пробовал ExtractIcon, но получается иконка 32x32x16, а интересует нормальная иконка, многостраничная что ли. Искал в инт...
Вопрос № 76173: Здравствуйте уважаемые эксперты. Ответьте на такие вопросы: 1)Как реализовать многопользовательское приложение? Если есть возможность, дайте пример или ссылку в Интернете на литературу. 2)Как сделать так, чтобы в MDI приложении как в MYIE...
Вопрос № 76195: Здравствуйте многоуважаемые эксперты! Помогите мне пожалуйста. Я вот уже несколько дней бьюсь над базами данных подскажите пожалуйста какие БД лучше использовать:мне необходимо что-бы в одной БД было несколько разных таблиц и при переносе на другой П...
Вопрос № 76209: Здравствуйте, уважаемые эксперты. Я тут хочу аркаду написать на Delphi 7, в которой нужно будет считывать из файла картинку, затем из картинки - определенный фрагмент, а фрагмент нужно повернуть на какой-то угол (от 1 до 359). Я реализовал все это де...
Вопрос № 76255: Здравствуйте уважаемые!Не поможете ли мне с кодом.У меня на форме лежит StringGrid и 3 кнопки : 1.Выделить строку;2.Выделить столбец;3.Удалить.После активизации 1 или 2 кнопки необходимо чтобы при клике мыши в любом месте таблицы выделялась либо стро...
Вопрос № 76271: Здравствуйте, уважаемые эксперты! Такой вопрос: можно ли из одной даты вычесть другую и получить результат в виде количество лет, количество месяцев и количество дней. Например: 25.08.1979 - 24.08.1978 = 1 год 0 месяцев 1 день Если можно с ко...
Вопрос № 76314: Здравствуйте! У меня 2 вопроса: 1. Как сделать размер программы на делфи меньше (чисто риторический вопрос) 2. Использую пример из delphiworld насчет глобального хука на клавиатуру (в приложении). Но русские символы эта программа не сохра...
Вопрос № 76323: Здравствуйте. Есть компонент StringGrid, помещаю на него компонент Label... и Label пропадает под StringGrid'ом. Как изменить положение Label, чтобы он был выше StringGrid'a?...
Вопрос № 76385: Только начал изучать Delphi.Вопрос такой:на главном окне две кнопки.Как сделать,чтобы по нажатию каждой кнопки открывалось новое окно(на каждую кнопку свое окно).Нужно-ли будет новые формы заносить в отдельный файл или можно все в одном файле держать...
Вопрос № 76394: Здравствуйте уважаемые эксперты! Большое спасибо вам за помощь!У меня такой вопрос как по тажатию кнопки в моём приложении определённый текст вставить в edit или memo другого приложения? Я думаю это реализуется через WinAPI но как не знаю. Помог...
Вопрос № 76550: Привет всем! Как на делфи запрограммировать COM-порт? И сделать, чтобы через этот порт можно было посылать АТ-команды модему? ...
Вопрос № 76620: Здраствуйте, эксперты. Я нигде нимогу найти информацию о том, как работать с сетью в Delphi (В Indy компонентах, вроде есть такие прибамбасы, но они нигде ни описываются). Помогите ссылочкой, где почитать....
Вопрос № 76643: Здравствуйте Эксперты! Помогите пожалуйста: как сделать так чтобы на форме было например изображение фона, (любая картинка), а по верх нее замкнутая фигура созданная с помощью Канваса -(прямоугольник, круг) и эту фигуру можно было перемещать мыш...
Вопрос № 76645: Уважаемые эксперты! Не подскажите красивый компонент для Delphi 6 типа TabbedNotebook (где можно менять цвет фона, цвет букв в заголовках). Заранее благодарен....
Вопрос № 76653: Здраствуйте Уважаемые эксперты, Поскажите пожалуйста как можно зделать чтобы в компоненте мемо изменить цвет не всего текста а только определённого слова? Или для етого подходит только компонент RichEdit или еще какой нибуть другой? И можно ли ка...
Вопрос № 76674: здравствуйте уважаемые эксперты! У меня такая проблема: В реестре хранится в виде строки число, оно не входит в диапазон Integer и обычное IntToStr() тут не поможет, строку нужно обязательно привести к виду числа, как это можно сделать?? Заранее ...
Вопрос № 76767: Здравствуйте уважаемые эксперты! Подскажите , как отслеживать события перемещения подсвеченной строки в выпавшем списке компонента TComboBox при перемещении по нему "мышки" и полчать при этом индекс посвеченного Item. Возмость реда...
Вопрос № 76809: Здравствуйте!!! Подскажите пожалуйста, как программно скрыть папки, у которых известен только конец имени и затем сделать их вновь видимыми. Спасибо....

Вопрос № 76.165
Доброго времени суток, уважаемые эксперты! Подскажите, пожалуйста, как извлечь из файла exe или dll иконку и сохранить ее в файл? Пробовал ExtractIcon, но получается иконка 32x32x16, а интересует нормальная иконка, многостраничная что ли. Искал в интернете, честно, nil!
Отправлен: 17.02.2007, 16:50
Вопрос задал: Spawn (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Troyan
Здравствуйте, Spawn!
Попробуйте код, расположенный в приложении!

Приложение:

---------
Цени законы своего сердца, иди на обгон! Будь человеком, не запачкай свою совесть!

Ответ отправил: Troyan (статус: 7-ой класс)
Ответ отправлен: 17.02.2007, 19:34
Оценка за ответ: 2
Комментарий оценки:
Спасибо за внимание к вопросу, но это нето. В своем вопросе я указал что пробовал ExtractIcon. А ExtractIcon и ExtractAssociatedIcon почти одно и тоже. ExtractAssociatedIcon выдает такую же иконку 32x32x16.
ExtractAssociatedIcon
ExtractIcon


Отвечает: Melamed
Здравствуйте, Spawn!
Используйте функцию ExtractIconEx. Пример смотрите в приложении

Приложение:

Ответ отправил: Melamed (статус: 9-ый класс)
Ответ отправлен: 18.02.2007, 19:14
Оценка за ответ: 2
Комментарий оценки:
Можно вопрос? Допустим, используем функцию ExtractIconEx, какую иконку мы получим в конце? 32x32x16. Насколько я понял класс TIcon не позволяет сохранить многоформатную иконку с цветами больше 16. Если я не прав поправьте меня.


Вопрос № 76.173
Здравствуйте уважаемые эксперты.
Ответьте на такие вопросы:
1)Как реализовать многопользовательское приложение? Если есть возможность, дайте пример или ссылку в Интернете на литературу.
2)Как сделать так, чтобы в MDI приложении как в MYIE ссылки на окна были не на панели задач а, например, на панели MainForm.
Благодарю за внимание!!!
Отправлен: 17.02.2007, 17:54
Вопрос задал: Ram (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Spawn
Здравствуйте, Ram! Ответ на второй вопрос:
Создаем новое приложение. Устанавливаем свойство формы FormStyle в fsMDIForm.
Создаете вторую форму. Устанавливаете свойство второй формы FormStyle в fsMDIChild. Бросаете на первую форму кнопку и пишете следующий код:

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2:= TForm2.Create(Owner);
Form2.Caption:= 'Form ' + IntToStr(form1.MDIChildCount);
Form2.Show;
end;

В разделе Public добавляете:
{ Public declarations }
bbForm: TButton;
procedure ButtonClicked(Sender: TObject);
procedure CreateButtons;
end;

Также в модуль добавляете вот этот код:

procedure TForm1.ButtonClicked(Sender: TObject);
begin
form1.MDIChildren[bbForm.Tag].BringToFront;
end;

procedure Tform1.CreateButtons;
var
I: Integer;
begin
for I:= 0 to Form1.MDIChildCount - 1 do
begin
bbForm:= TButton.Create(Self);
bbForm.Parent:= Self;
bbForm.OnClick:= ButtonClicked;
bbForm.Visible:= True;
bbForm.Caption:= 'Form ' + IntToStr(I + 1);
bbForm.Tag:= I;
bbForm.Top:= 40;
if I = 0 then
bbForm.Left:= 5
else
bbForm.Left:= 5 + (bbForm.Width * I);
end;
end;

Для второй формы:

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:= caFree;
end;

procedure TForm2.FormShow(Sender: TObject);
begin
form1.CreateButtons;
end;
Ответ отправил: Spawn (статус: 1-ый класс)
Ответ отправлен: 18.02.2007, 09:07


Вопрос № 76.195
Здравствуйте многоуважаемые эксперты! Помогите мне пожалуйста. Я вот уже несколько дней бьюсь над базами данных подскажите пожалуйста какие БД лучше использовать:мне необходимо что-бы в одной БД было несколько разных таблиц и при переносе на другой ПК она работала и не требовала никаких библиотек т.е. была независимой
Отправлен: 17.02.2007, 20:34
Вопрос задал: Fireforce (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Fireforce!
Вариант 1.
Использовать для доступа к данным ADO и тип базы данных Access. В подавляющем большинстве случаев все библиотеки для ADO и Access на компьютерах уже есть, если там установлен MSOffice.
Вариант 2.
Скачать компонент для Дельфи TDbf (http://tdbf.sourceforge.net/) и работать с типом базы dBase. При этом все необходимое для доступа к данным будет в Вашей скомпилированной программе и можете ее переносить вместе с базой куда хотите.
Вариант 3.
Если нужен полноценный SQL сервер для одного пользователя, то можно использовать Embeded FireBird (http://www.ibase.ru/firebird.htm). При этом к Вашей программе добавятся 4 или 5 небольших DLLек, которые будут лежать в каталоге программы. Регистрации и установки не требуется. При этом Вы получаете полнофункциональный сервер, совместимый с InterBase (для доступа к данным используются компоненты с вкладки InterBase) для одного человека работающий через локальный протокол. Как плюс этого метода, если Вы захотите доделать Вашу программу под многопользовательский режим, то готовая БД может без переделки использоваться с сетевым сервером FireBird.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 18.02.2007, 06:56

Отвечает: Rusland
Здравствуйте, Fireforce!
Добавлю еще вариант BDE - Paradox. Без библиотек не обойтись. Размер библиотек BDE около двух мегабайт.
Ответ отправил: Rusland (статус: Профессионал)
Россия, Казань
Адрес: Мой адрес не дом и не улица, мой адрес советский союз
WWW: Логотипы для сотовых телефонов
----
Ответ отправлен: 19.02.2007, 14:09


Вопрос № 76.209
Здравствуйте, уважаемые эксперты. Я тут хочу аркаду написать на Delphi 7, в которой нужно будет считывать из файла картинку, затем из картинки - определенный фрагмент, а фрагмент нужно повернуть на какой-то угол (от 1 до 359). Я реализовал все это дело через Canvas.pixels и поворот картинки (TBitmap) через Sin/Cos. (см. приложение) В общем метод - очень медлительный и уже 8 картинок при повороте каждую 1 милисекунду(в таймере) начинают лагать жутко (при условии, что предыдущую картинку я стираю наложением картинки цвета фона). Есть ли способ побыстрее, но не очень сложный для понимания - я только начинающий программист?

Приложение:

Отправлен: 17.02.2007, 21:58
Вопрос задал: Asker (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: Troyan
Здравствуйте, Asker!
Вот алгоритм поворота изображения. Пусть:
O - это центр поворота,
M - некая точка исходного изображения.
Для каждой точки M нужно найти угол alpha между отрезком OM и горизонталью и длину r отрезка OM. Теперь, чтобы повернуть изображение на угол beta, нужно каждой точке M присвоить цвет точки исходного изображения с координатами x,y, где
x = xo + r * cos(alpha + beta)
y = yo + r * sin(alpha + beta)
xo,yo - центр поворота,
r - длина отрезка OM
Важно именно каждой точке нового изображения сопоставлять точку старого изображения, а не наоборот, так как иначе некоторые точки нового изображения останутся не закрашенными.
Эту программу можно сильно ускорить, если исходное изображение записать в массив и обращаться к реальной переменной, а не к свойству Canvas.Pixels.

Приложение:

---------
Цени законы своего сердца, иди на обгон! Будь человеком, не запачкай свою совесть!

Ответ отправил: Troyan (статус: 7-ой класс)
Ответ отправлен: 17.02.2007, 22:20
Оценка за ответ: 4


Вопрос № 76.255
Здравствуйте уважаемые!Не поможете ли мне с кодом.У меня на форме лежит StringGrid и 3 кнопки : 1.Выделить строку;2.Выделить столбец;3.Удалить.После активизации 1 или 2 кнопки необходимо чтобы при клике мыши в любом месте таблицы выделялась либо строка либо столбец а при нажатии 3 соответственно выделенная строка или столбец должны быть удалены сдвинув оставшееся.Заранее спасибо.
Отправлен: 18.02.2007, 11:35
Вопрос задал: Delphi-n (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ерёмин Андрей
Здравствуйте, Delphi-n!
Это не сложно. Для определения и установки выделенных ячеек в StringGrid служит свойство Selection. Всё остальное делается стандартными способами - с помощью циклов. В приложении код всех процедур, а в прикреплённом файле - пример полностью. Самое главное - в Options у TStringGrid нужно установить значение goRangeSelect в True. Желаю удачи!

Приложение:

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.

Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на Delphi. Всё для программиста. Файловый архив, статьи, помощь, советы, обмен опытом.
ICQ: 286867644
----
Ответ отправлен: 18.02.2007, 12:17

Отвечает: KDV
Здравствуйте, Delphi-n!

Предлагаю использовать две кнопки: "удалить строку" и "удалить столбец".
стаешь на ячейку. по нажатию на кнопку узнаешь номер Col или Row.
Далее в цикле от текущей строки/столбца в цикле переписываешь значения со сдвигом вверх/влево

---------
Делай, что должно, и будет что будет
Ответ отправил: KDV (статус: 3-ий класс)
Ответ отправлен: 19.02.2007, 18:09


Вопрос № 76.271
Здравствуйте, уважаемые эксперты!
Такой вопрос: можно ли из одной даты вычесть другую и получить результат в виде количество лет, количество месяцев и количество дней. Например: 25.08.1979 - 24.08.1978 = 1 год 0 месяцев 1 день
Если можно с кодом!
Отправлен: 18.02.2007, 13:37
Вопрос задал: Blackberry (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Spawn
Здравствуйте, Blackberry!
Вот проверенный код, может и не самый оптимальный, но рабочий:

function TForm1.DiffDate(Date_1, Date_2: TDate; var Year, Mounth,
Day: Integer): Boolean;
var
Y_1, M_1, D_1, Y_2, M_2, D_2: Integer;
begin
Result:= False;
try
Y_1:= YearOf(Date_1);
M_1:= MonthOf(Date_1);
D_1:= DayOf(Date_1);
Y_2:= YearOf(Date_2);
M_2:= MonthOf(Date_2);
D_2:= DayOf(Date_2);
except;
Result:= False;
Exit;
end;
Year:= Y_1 - Y_2;
Mounth:= M_1 - M_2;
Day:= D_1 - D_2;
Result:= True;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Y, M, D: Integer;
begin
if DiffDate(StrToDate('25.08.1979'), StrToDate('24.08.1978'), Y, M, D) then
ShowMessage('DiffDate: ' + IntToStr(Y) + ' год, ' + IntToStr(M) + ' месяцев, ' + IntToStr(D) + ' день.');
end;
Ответ отправил: Spawn (статус: 1-ый класс)
Ответ отправлен: 18.02.2007, 14:02

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

В приложении смотрите код (находим количество дней, месяцев и лет со дня рождения Великого вождя Октябрьской революции В.И. Ленина :o)).

Единственное немного поясню, как решать данную задачу:
1) Нахождение количество пройденных лет - просто используем функцию YearsBetween();
2) Количество пройденных месяцев - используем функцию MonthsBetween(), но дополнительно нужно найти еще остаток от деления на 12, так как функция возвращает общее количество пройденных месяцев.
3) Количество пройденных дней, самое интересное: сначала находим общее количество пройденных дней, затем узнаем сколько прошло полных недель и да еще умножаем на количество дней в неделе и находим от двух полученных величин разность. (при помощи таких функций: DaysBetween(); WeeksBetween()).
Остался такой маленький нюанс - учитывать или не учитывать текущий день. Если его не учитывать то еще нужно дополнительно отнять 1.

Единственное не забудьте подключить модуль DateUtils. {uses DateUtils;}
Good Luck!!!

Приложение:

---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 18.02.2007, 16:08

Отвечает: KDV
Здравствуйте, Blackberry!

красиво для любого случая - не сделаешь.
можно результату вычитания сделать:
d = D2 - D1;
if d > 0 then
begin
dY = d div 365;
d = d mod 365;
dM = d div 30;
dD = d mod 30
end;

А можно:
DecodeDate(D1, dY1, dM1, dD1);
DecodeDate(D2, dY2, dM2, dD2);
... но дальше больше гемороя (хотя в некоторых случаях будет коректнее).


---------
Делай, что должно, и будет что будет
Ответ отправил: KDV (статус: 3-ий класс)
Ответ отправлен: 19.02.2007, 17:50


Вопрос № 76.314
Здравствуйте!
У меня 2 вопроса:
1. Как сделать размер программы на делфи меньше (чисто риторический вопрос)
2. Использую пример из delphiworld насчет глобального хука на клавиатуру (в приложении). Но русские символы эта программа не сохраняет, т.е. сохраняет, но в виде буржуйских (типа вместо "й" дает "q" и т.п.), а также не показывает регистр клавиш (всегда верхний). Как это исправить можно?

Приложение:

Отправлен: 18.02.2007, 18:08
Вопрос задал: Troyan (статус: 7-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: W@NDeReR
Здравствуйте, Troyan!
Воспользуйтесь программой AsPack сжимает ехе файл больше чем на 50%

Ответ отправил: W@NDeReR (статус: 2-ой класс)
Ответ отправлен: 18.02.2007, 19:17
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: Korolyov Alexandr
Здравствуйте, Troyan!

1. Для минимизации есть два пути:
- отключить все высокоуровневые библиотеки (VCL) и использовать только функции WinAPI
- использовать упаковщики исполняемых файлов, что одновременно создает защиту для Вашей программы (не все отладчики и дизасемблеры понимают упакованые экзешники).
Подробности можно посмотреть в книги "Делфи глазами хакера" Михаила Фленова.

2. Русские буковки не отображаются т.к. Хук ловит не символы ввода, а просто коды клавиши, для точнго понимания что вводит пользователь надо учесть раскладку клавиатуры, региональные настройки и т.д.
Вот такой прием был применен для того чтобы можно было наши символы ловить:

if (lParam and $80000000) <> 0 then
begin
GetKeyboardState(KS);
ToASCIIEx(wParam, 0, KS, @C, 0, GetKeyBoardLayout(0));
// посылаем своему окну сообщение
PostMessage (pRec.Hwin, WM_USER, ord(C), GetForegroundWindow);
end;


---------
Читайте help
Ответ отправил: Korolyov Alexandr (статус: 2-ой класс)
Ответ отправлен: 18.02.2007, 21:32
Оценка за ответ: 5
Комментарий оценки:
Спасибо!


Вопрос № 76.323
Здравствуйте. Есть компонент StringGrid, помещаю на него компонент Label... и Label пропадает под StringGrid'ом. Как изменить положение Label, чтобы он был выше StringGrid'a?
Отправлен: 18.02.2007, 19:59
Вопрос задал: Иванов Михаил Викторович (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, Иванов Михаил Викторович!
Вообще, у всех визуальных компонент есть метод BringToFront, при вызове которого компонент перемещается на z-уровень выше. Однако из-за некоторых особенностей поместить TLabel поверх TStringGrid не удастся. Зато TStaticText (вкладка Additional) - запросто. Желаю удачи!
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на Delphi. Всё для программиста. Файловый архив, статьи, помощь, советы, обмен опытом.
ICQ: 286867644
----
Ответ отправлен: 18.02.2007, 20:09

Отвечает: Zolton007
Здравствуйте, Иванов Михаил Викторович!
Не надо помещать лаблу на грид.
Лучше воспользуйтесь StringGrid.Cells[номер столбца,номер строки]:='текст'; =)
ИМХО так удобнее =)
---------
Если твоя программа выполняет мистические действия, - значит ты сделал что-то невероятно тупое!
Ответ отправил: Zolton007 (статус: 3-ий класс)
Ответ отправлен: 18.02.2007, 20:49

Отвечает: Korolyov Alexandr
Здравствуйте, Иванов Михаил Викторович!

Я нашел только один способ для StringGrid (почему-то у него нет св-во transparent) -это сделать LAbel дочерним окном StringGride, правда тогда LAbel будт отображаться только в StringGride.
---------
Читайте help
Ответ отправил: Korolyov Alexandr (статус: 2-ой класс)
Ответ отправлен: 18.02.2007, 21:32

Отвечает: KDV
Здравствуйте, Иванов Михаил Викторович!

Правая кнопка мыши над компонентом и "ControlSend to back" или "ControlBring to front"
---------
Делай, что должно, и будет что будет
Ответ отправил: KDV (статус: 3-ий класс)
Ответ отправлен: 19.02.2007, 17:04


Вопрос № 76.385
Только начал изучать Delphi.Вопрос такой:на главном окне две кнопки.Как сделать,чтобы по нажатию каждой кнопки открывалось новое окно(на каждую кнопку свое окно).Нужно-ли будет новые формы заносить в отдельный файл или можно все в одном файле держать.И еще,посоветуйте какую-нибудь литературу для начинающего по Delphi для совсем новичка.Спасибо за помощь.
Отправлен: 19.02.2007, 10:12
Вопрос задал: Serega1968 (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Архангельский Андрей Германович
Здравствуйте, Serega1968!

Литература приведена здесь
http://www.az-design.ru/Support/SoftWare/Delphi/booklist.shtml

Каждую форму лучше хранить не только в отдельных файлах, но и в отдельном каталоге, так как форма это не только код (Unit), но и изображение (.dfm) и другие файлы.

Вызов формы из меню:

procedure TMainForm.TestNameOpen(Sender: TObject);
var
Child: TMDIChild;
begin
{ create a new MDI child window }
Child := TfmTestName.Create(Application);
Child.Caption := 'Наименование формы';
end;

---------
Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 19.02.2007, 10:23
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо за помощь

Отвечает: W@NDeReR
Здравствуйте, Serega1968!

Для того что бы открывались другие формы их нужно создать File->New->Form
Затем выбрать File->Use Unit... чтобы подключить форму. Чтобы открыть форму по нажатию по кнопки впишите Form2.showModal где Form2 имя формы которую вы хотите открыть. Форму можно сохранить нажав на дискетку.
Чтобы открыть созданную форму после загрузки проекта нажмите View-> Project Manager
В качестве литературы могу посоветовать Михаил Фленов Библия Delphi сам по ней начинал
Ответ отправил: W@NDeReR (статус: 2-ой класс)
Ответ отправлен: 19.02.2007, 10:47
Оценка за ответ: 5
Комментарий оценки:
Спасибо

Отвечает: Zolton007
Здравствуйте, Serega1968!
Смотря какие формы, впрочем....:
Можно просто создавать новые объекты класса TForm, т.е. генерить объекты. Это загонно =) смотря какая перд Вами стоит задача. Есть не оддин способ. Можно создать новые формы, разместить на них требуемые компоненты, и поставить visible Равным фолс, а по жмяку на батоне делать визибл тру. Либо делать ShowModal и мн. др. =)

По литературе:
Советую Фаронова, Архангельского. Обалденные книги у этих авторов. Тока книги Архангельского ИМХО плохо структурированы. А вот по Фаронову легко сделать первые шаги.
---------
Если твоя программа выполняет мистические действия, - значит ты сделал что-то невероятно тупое!
Ответ отправил: Zolton007 (статус: 3-ий класс)
Ответ отправлен: 19.02.2007, 12:39
Оценка за ответ: 5
Комментарий оценки:
Понял.Спасибо

Отвечает: KDV
Здравствуйте, Serega1968!

в одном проекте добавляешь все окна, которые тебе нужны. (FileNewForm)
нужно чтобы у каждой кнопки был СВОЙ обработчик. И в каждом обработчике описываешь открытие нужной тебе формы.
---------
Делай, что должно, и будет что будет
Ответ отправил: KDV (статус: 3-ий класс)
Ответ отправлен: 19.02.2007, 13:46
Оценка за ответ: 5
Комментарий оценки:
Понял.Спасибо

Отвечает: Spawn
Здравствуйте, Serega1968!
Для начала сделаем следующее: File -> New -> Form (т.е. добавили в проект еще одну форму). Активируем первую форму и жмем File -> Use unit. Бросаем на форму кнопку, жмем на нее два раза, появляется редактор кода и пишем в нем:
//Form2 - это имя новой формы
//Создаем форму
Form2:= TForm2.Create(Onwer);
Form2.Show; //или Form2.ShowModal;
Если нужно третье окно, то обратно добавляем новую форму в проект, жмем на кнопку два раза и пишем:
Form3:= TForm3.Create(Onwer);
Form3.Show; //или Form3.ShowModal;

А по части книжки зайдите на сайт http://www.vr-online.ru На этом сайте можно скачать книгу самоучитель по Delphi Михаила Фленова. Очень хороший учебник для начинающего.
Ответ отправил: Spawn (статус: 1-ый класс)
Ответ отправлен: 19.02.2007, 15:07
Оценка за ответ: 5
Комментарий оценки:
Отлично.Все понял Спасибо


Вопрос № 76.394
Здравствуйте уважаемые эксперты! Большое спасибо вам за помощь!У меня такой вопрос
как по тажатию кнопки в моём приложении определённый текст вставить в edit или memo другого приложения? Я думаю это реализуется через WinAPI но как не знаю. Помогите подалуйста. Зарание спасибо.
Отправлен: 19.02.2007, 10:58
Вопрос задал: Fireforce (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Zolton007
Здравствуйте, Fireforce!
Подробно ща ответить не могу. Да, винапи. Надо получить хандлер окна и найти на нем этот едит, перебором компонент. Это не простая задача.
---------
Если твоя программа выполняет мистические действия, - значит ты сделал что-то невероятно тупое!
Ответ отправил: Zolton007 (статус: 3-ий класс)
Ответ отправлен: 19.02.2007, 12:49

Отвечает: Spawn
Здравствуйте, Fireforce!
В приложении находится код, который вам поможет. Он находить диалог windows Выполнить (Пуск -> Выполнить), и изменяет заголовок окна на "Взлет программы". Поскольку окон в системе очень много, для изменения текста какого либо компонента, нужно найти его "родителя", т.е. для поиска кнопки, сначала найдем форму на которой она находиться.

Приложение:

Ответ отправил: Spawn (статус: 1-ый класс)
Ответ отправлен: 19.02.2007, 16:03

Отвечает: Korolyov Alexandr
Здравствуйте, Fireforce!

Вообще, надо уточнить в какой Edit нужно писать, если в определенный то проще, можно найти хэндел по названию и класс, а если в заранее не известный тогда с помощью функции EnumWindows и EnumChildWindows. В приложении пример, в котором эти функции используются.

Приложение:

---------
Читайте help

Ответ отправил: Korolyov Alexandr (статус: 2-ой класс)
Ответ отправлен: 19.02.2007, 16:04


Вопрос № 76.550
Привет всем!
Как на делфи запрограммировать COM-порт? И сделать, чтобы через этот порт можно было посылать АТ-команды модему?
Отправлен: 20.02.2007, 07:44
Вопрос задал: Red Spirit (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: din
Здравствуйте, Red Spirit!
Есть отличный набор компонент для работы с Com-портом. Вот ссылка на для закачки http://drv.tae.ru/Arhivs/Utils/cport/. Там не сложно разобраться.
Удачи!
---------
Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Практикант)
Ответ отправлен: 20.02.2007, 10:25
Оценка за ответ: 4

Отвечает: Spawn
Здравствуйте, Red Spirit!
Я для этого использую Для этого можно использовать ComDrv32.

Отправка AT команд:

procedure TForm1.Button1Click(Sender: TObject);
begin
//Отправка команды
CommPortDriver1.SendString('AT+CGMM' + #13#10);
end;

procedure TForm1.CommPortDriver1ReceiveData(Sender: TObject;
DataPtr: Pointer; DataSize: Cardinal);
var
S: String;
begin
//Прием ответа модема
S:= StringOfChar(' ', DataSize);
Move(DataPtr^, PChar(S)^, DataSize);
ShowMessage(S);
end;

P.S. Еще есть очень хорошая библиотека TurboPower Async Professional и TMS Async32

Приложение:

Ответ отправил: Spawn (статус: 1-ый класс)
Ответ отправлен: 20.02.2007, 15:00
Оценка за ответ: 5


Вопрос № 76.620
Здраствуйте, эксперты.

Я нигде нимогу найти информацию о том, как работать с сетью в Delphi (В Indy компонентах, вроде есть такие прибамбасы, но они нигде ни описываются). Помогите ссылочкой, где почитать.
Отправлен: 20.02.2007, 17:47
Вопрос задал: Alxx (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

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

Что касается компонентов Indy, их описание и применение Вы можете прочитать в книге Indy in Depth, глубины Indy.

Скачать ее и прочитать Вы сможете по такой ссылке: Link...

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


Вопрос № 76.643
Здравствуйте Эксперты! Помогите пожалуйста: как сделать так чтобы на форме было например изображение фона, (любая картинка),
а по верх нее замкнутая фигура созданная с помощью Канваса -(прямоугольник, круг) и эту фигуру можно было перемещать мышкой
Отправлен: 20.02.2007, 20:39
Вопрос задал: Fireforce (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: PaVeL_Ekt
Здравствуйте, Fireforce!

Это делается очень легко,
и главное, много способов.
1)
Сперва на форме рисуем фон с помощью канваса, затем
рисуем с помощью него же любую фигуру.

Var
BitMap:TBitMap;
begin
BitMap:=TBitMap.Create;
BitMap.LoadFromFile(FileName);
Form1.Canvas.Draw(x,y,BitMap);
Form1.Canvas.Ellipse(x1,y1,x2,y2);
end;
2)
Рисуем на Bitmap-e
BitMap.LoadFromFile(FileName);
BitMap.Canvas.Ellipse(x1,y1,x2,y2);
Form1.Canvas.Draw(x,y,BitMap);
3)
Рисуем 2 битмапа по аналогии, и прорисовываем на форме;


---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: Студент)
Ответ отправлен: 21.02.2007, 11:23


Вопрос № 76.645
Уважаемые эксперты! Не подскажите красивый компонент для Delphi 6 типа
TabbedNotebook (где можно менять цвет фона, цвет букв в заголовках). Заранее благодарен.
Отправлен: 20.02.2007, 20:57
Вопрос задал: AKaz (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Архангельский Андрей Германович
Здравствуйте, AKaz!

Raize Components имеют ОЧЕНЬ много красивых компонентов этого типа и позволяют не только менять цвет, но и писать под углом, например 40.5 градуса
Хорошая замена RxLib2.75

---------
Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 20.02.2007, 21:05


Вопрос № 76.653
Здраствуйте Уважаемые эксперты,
Поскажите пожалуйста как можно зделать чтобы в компоненте мемо изменить цвет не всего текста а только определённого слова? Или для етого подходит только компонент RichEdit или еще какой нибуть другой? И можно ли как нибуть в компонент мемо или ему подобный вставить картинку, чтото как смайлики в чатах?
Если это возможно, то поделитесь пожалуйста исходником.
Заранее спасибо.
С Уважением, Станислав.
Отправлен: 20.02.2007, 21:50
Вопрос задал: Станислав (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Melamed
Здравствуйте, Станислав!
Я Вас разочарую, но в компоненте memo нельзя изменить цвет одного слова или вставить рисунок, так как с точки зрения Windows'а класс TMemo реализует управление окна класса Edit со стилем ES_MULTILINE, то есть создается многострочный редактор. Окно этого же класса создает и компонент TEdit, но без этого стиля. Тогда получается однострочный текстовый редактор

А компонент TRichEdit создает окно класса RICHEDIT, расширенный редактор текста. В нем можно менять параметры шрифта не только всего текста но и отдельных его частей, в вашем случае 89;лова; втавлять рисунки и еще многое другое.

Поэтому в вашем случае я рекомендую использовать компонент TRichEdit или писать свой редактор, что весьма проблемотично, но теоритически возможно
Ответ отправил: Melamed (статус: 9-ый класс)
Ответ отправлен: 20.02.2007, 22:34


Вопрос № 76.674
здравствуйте уважаемые эксперты! У меня такая проблема:
В реестре хранится в виде строки число, оно не входит в диапазон Integer и обычное IntToStr() тут не поможет, строку нужно обязательно привести к виду числа, как это можно сделать?? Заранее благодарен!
З.Ы. может есть какой нибудь другой способ, мне нужно получить результат функции Lo() с этим с числом?
Отправлен: 21.02.2007, 00:08
Вопрос задал: Алескандр (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, Алескандр!
Первое, что приходит в голову - использовать Int64 вместо Integer. В этом случае используется функция StrToInt64() и тип данных для переменной-числа соответственно Int64.
P.S. В вопросе вы написали IntToStr(), хотя по смыслу это StrToInt().
Желаю удачи!
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на Delphi. Всё для программиста. Файловый архив, статьи, помощь, советы, обмен опытом.
ICQ: 286867644
----
Ответ отправлен: 21.02.2007, 08:03

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Алескандр!
"Строку привести к виду числа" ... Может быть, там написано шестнадцатеричное число и вам его нужно прочитать/привести?
Тогда вам надо удалить в начале строки '0x', если оно там есть и вместо него написать '$'. Можно "скармливать" обычному StrToInt.
---------
Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Специалист)
Ответ отправлен: 22.02.2007, 14:15


Вопрос № 76.767
Здравствуйте уважаемые эксперты!
Подскажите , как отслеживать события перемещения подсвеченной строки в выпавшем списке компонента TComboBox при перемещении по нему "мышки" и полчать при этом индекс посвеченного Item.
Возмость редактирования в элементе ввода компонента должна сохраняться.
Отправлен: 21.02.2007, 15:08
Вопрос задал: Николай Петров (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Melamed
Здравствуйте, Николай Петров!
Вам следует обрабатывать событие OnSelect. Индекс выбранной строки в Drop-Down списке можно узнвть с помощью свойства ItemIndex компонента TComBoBox.

Желаю удачи
Ответ отправил: Melamed (статус: 9-ый класс)
Ответ отправлен: 21.02.2007, 15:42


Вопрос № 76.809
Здравствуйте!!! Подскажите пожалуйста, как программно скрыть папки, у которых известен только конец имени и затем сделать их вновь видимыми. Спасибо.
Отправлен: 21.02.2007, 19:13
Вопрос задал: Piit (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Piit!
Используйте консольная утилиту attrib:
ShellExecute(nil, nil, 'attrib', '*конец_имени_папки +H', nil, WS_HIDE);
Насчет параметра "+H" не уверен — посмотрите справку: для этого наберите "attrib /?" в консоли.
---------
Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Специалист)
Ответ отправлен: 22.02.2007, 13:45


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

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

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

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

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


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


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

В избранное