Вопрос № 88902: как сделать чтобы цвет формы не зависел от текущего стиля оформления Windows?...Вопрос № 88939: К программе подключаеться файл который находиться в папке, которая находиться в папке с программой.
Вопрос: можно ли использовать его так же как если бы он был в одной с программой папке, или придеться встроить модуль подключения этого файла?...Вопрос № 88942: Уважаемые эксперты!
Сразу к делу. Вот вопрос:
В Delphi 7 хочу создать программу, которая сворачивалась в трей и по нажатию кнопки мыши всплывало Popup menu. Все это сделал, но не знаю как редактировать через запущенную программу (не из Delphi...Вопрос № 88960: Как запрограмить текстовый редактор с возможностью выравнивания текста ?...Вопрос № 88965: Добрый день.
Подскажите мне пожалуйста как осуществить поиск файлов на всех дисках (имеется ввиду жесткого) по маске. Причем приложение у меня консольное, т.е. запись файлов в ListBox и прочее не нужна! Функция должна работать как FindNext вот то...Вопрос № 88995: Здравствуйте уважаемые эксперты!У меня на форме Form1 находится StringGrid1 с помощью следующего кода
http://www.excode.ru/art2036p8.html я делаю встроенный редактор ComboBox1 в ячейке StringGrid1,но по задумке этим же!!! редактором ComboBox1 я ...
Вопрос № 88.902
как сделать чтобы цвет формы не зависел от текущего стиля оформления Windows?
Отправлен: 28.05.2007, 07:56
Вопрос задал: Kolyan (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Архангельский Андрей Германович
Здравствуйте, Kolyan!
Для этого нужно указать цвет в явном виде, например, clNavy.
При указании цвета через константы, например, clBtnFace, цвет будет менятся пользователем в зависимости от схемы
--------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Отвечает: Ерёмин Андрей
Здравствуйте, Kolyan!
Если вы посмотрите на значения списка свойства Color, то увидите, что сначала идут явные стандартные цвета, а затем цвета становятся похожими. Вот вся вторая половина списка (и даже больше) - это исключительно системные цвета. Если использовать их, то цвет формы будет меняться. Задать цвет можно либо с помощью стандартных констант (clRed, clBlue, и т.д.), либо в формате $00BBGGRR. А если, например, вам подходит один из системных цветов, то можно сделать так: выбрать его, затем дважды щёлкнуть по полю этого свойства
- откроется стандартный диалог выбора цвета. Если там ничего не изменить и нажать "ОК", то выбранный системный цвет преобразуется в формат, указанный мной выше. В этом случае цвет уже не будет меняться в соответствии с цветовой схемой Windows.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор) Россия, Тула WWW:Программирование на DELPHI ---- Ответ отправлен: 28.05.2007, 08:40 Оценка за ответ: 5 Комментарий оценки: вот оно что!!!
Вопрос № 88.939
К программе подключаеться файл который находиться в папке, которая находиться в папке с программой.
Вопрос: можно ли использовать его так же как если бы он был в одной с программой папке, или придеться встроить модуль подключения этого файла?
Допустим Ваша программа находиться по адресу C:DirProgq.exe
Чтобы загрузить файл в Memo находящийся в этой же директории, что и программа, т.е. C:DirProg1.txt, достаточно написать:
Memo1.Lines.LoadFromFile('1.txt');
Для файла C:Dir2.txt:
Memo1.Lines.LoadFromFile('..2.txt');
Для файла C:DirText3.txt:
Memo1.Lines.LoadFromFile('..Text3.txt');
Для файла C:PathText4.txt:
Memo1.Lines.LoadFromFile('....PathText4.txt');
Для файла C:DirProgFile5.txt:
Memo1.Lines.LoadFromFile('File5.txt');
Для файла F:Text6.txt:
Memo1.Lines.LoadFromFile('F:Text6.txt');
Надеюсь с этим все в порядке и Вы поняли принцип.
В большинстве случаев проблем Вы не получите, но в языке Pascal (и в Delphi тоже), есть такая процедура ChDir, которая меняет текущюю директорию и код расположенный выше будет работать неправильно. А также, я правда в этом неуверен, диалоговые окна могут менять текущюю директорию, а значит этот метод не является универсальным и в таком случае лучше делать это так, как показано ниже:
var s: string;
begin
s:=ExtractFilePath(Application.ExeName);
//Этот метод загрузит в Memo, файл с именем C:Dir1.txt
Memo1.Lines.LoadFromFile(s+'..1.txt');
end;
Т.е. перед именем файла поставьте перемененную s.
Где ExtractFilePath - функция которая отсекает имя файла и остается только директория (C:DirProg),
Application.ExeName - собственно имя файла с директорией (C:DirProgq.exe)
И если теперь вы перенесете папку Dir (C:Dir) в другое место, то все будет работать также.
Приложение:
Ответ отправил: Louken (статус: 3-ий класс)
Ответ отправлен: 28.05.2007, 16:00 Оценка за ответ: 5
Отвечает: Примак Руслан Николаевич
Здравствуйте, Diman Soldatov / DES!
В дополнение к ответам выше, в ряде случаев, как например, когда вы используете диалоги сохранения/открытия файлов текущая директория работы приложения может меняться. В этом случае, вы можете не найти то, что вы ищете.
Самый надежный способ:
AppDir := ExtractFilePath(Application.ExeName);
MyFileName := AppDir + 'MyDirMyFile.txt';
Ответ отправил: Примак Руслан Николаевич (статус: 2-ой класс)
Ответ отправлен: 29.05.2007, 14:35
Вопрос № 88.942
Уважаемые эксперты!
Сразу к делу. Вот вопрос:
В Delphi 7 хочу создать программу, которая сворачивалась в трей и по нажатию кнопки мыши всплывало Popup menu. Все это сделал, но не знаю как редактировать через запущенную программу (не из Delphi) можно было указать название игры и ее адрес, и чтобы эта программа (название) появилось в Popup menu. Какие компоненты использовать? Какой код писать?
Отправлен: 28.05.2007, 13:39
Вопрос задал: Night User (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Gladiator
Здравствуйте, Night User!
Приблизительно можно реализовать так (см. приложение).
Остальное дело техники.
Удачи.
Приложение:
Ответ отправил: Gladiator (статус: 9-ый класс)
Ответ отправлен: 28.05.2007, 14:45
Вопрос № 88.960
Как запрограмить текстовый редактор с возможностью выравнивания текста ?
Отправлен: 28.05.2007, 15:44
Вопрос задал: Морозов (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Louken
Здравствуйте, Морозов!
Если Вам нужен редактор на основе TMemo, то для этого нужно просто изменять свойство Alignment (Memo1.Alignment:=taCenter;).
А если Ваш редактор будет посложнее, на основе TRichEdit, то есть в Delphi7 (на счет других версий не знаю) в каталоге DemosRichEdit (C:Program Files Borland Delphi7 Demos RichEdit), такой проект - программа наподобие стандартного WordPad.
Там реализованы изменение размеров, начертания и имени шрифта, изменение позиции текста, создание списка, есть даже линейка, как в word'e. Также реализованы функции создания документа, открытия, сохранения, печати, работа с буфером обмена и др.
Можете посмотреть как это делается. Также я думаю будет не сложно добавить свои возможности по примеру, например изменение цвета текста и фона.
Ответ отправил: Louken (статус: 3-ий класс)
Ответ отправлен: 28.05.2007, 16:13 Оценка за ответ: 5
Отвечает: Ерёмин Андрей
Здравствуйте, Морозов!
В RichEdit выравнивание текущего абзаца (именно абзаца, а не всего текста) делается так:
//По левому краю
RichEdit1.Paragraph.Alignment:=taLeftJustify;
//По центру
RichEdit1.Paragraph.Alignment:=taCenter;
//По правому краю
RichEdit1.Paragraph.Alignment:=taRightJustify;
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Добрый день.
Подскажите мне пожалуйста как осуществить поиск файлов на всех дисках (имеется ввиду жесткого) по маске. Причем приложение у меня консольное, т.е. запись файлов в ListBox и прочее не нужна! Функция должна работать как FindNext вот только по всем дискам и папкам.
Заранее благодарен!!!!
Отвечает: Кэр Лаэда
Здравствуйте, Овчинников Николай Владиславович!
Вот. все разбил по файлам осталось только сохранить все с нужными именами и откомпилировать, поиск идет рекурсивный, так что если укажете какой нибудь файл на диске Z то соответственно придется подождать
Приложение:
Ответ отправил: Кэр Лаэда (статус: 6-ой класс)
Ответ отправлен: 28.05.2007, 17:32 Оценка за ответ: 5 Комментарий оценки: Отлично! Вот только приложение 390Кб, а хотелось бы 44Кб
Вопрос № 88.995
Здравствуйте уважаемые эксперты!У меня на форме Form1 находится StringGrid1 с помощью следующего кода
http://www.excode.ru/art2036p8.html я делаю встроенный редактор ComboBox1 в ячейке StringGrid1,но по задумке этим же!!! редактором ComboBox1 я хочу оперировать и на Form2 вызываемой из Form1.
По Form2.FormShow делаю:
Form1.ComboBox1.Parent:= Form2;
задаю left,top...
Form1.ComboBox1.Visible := True;,но при первом же выборе значений на Form2,ComboBox1 исчезает,хотя значение и заходит в StringGrid1.Исправте пожалуйста мою ошибку.
Отправлен: 28.05.2007, 18:54
Вопрос задал: GAZOT (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Gh0stik
Здравствуйте, GAZOT!
Вам достаточно будет добавить условие в котором Вы определяет текущего "родителя" объекта.
Т.е. Вам нужно сделать такие преобразования в выше указанном коде: procedure TForm1.ComboBox1Change(Sender: TObject);
begin
{Перебросим выбранное в значение из ComboBox в grid}
StringGrid1.Cells[StringGrid1.Col,
StringGrid1.Row] := ComboBox1.Items[ComboBox1.ItemIndex]; if ComboBox1.Parent=Form1 then
begin
ComboBox1.Visible := False;
StringGrid1.SetFocus;
end;
end;
procedure TForm1.ComboBox1Exit(Sender: TObject);
begin
{Перебросим выбранное в значение из ComboBox в grid}
StringGrid1.Cells[StringGrid1.Col,
StringGrid1.Row] := ComboBox1.Items[ComboBox1.ItemIndex]; if ComboBox1.Parent=Form1 then
begin
ComboBox1.Visible := False;
StringGrid1.SetFocus;
end;
end;
Хотя если Вам фокус необходимо всетаки переводить на StringGrid1, то просто не включайте строку перевода фокуса в блок после условия.
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 28.05.2007, 19:38