Вопрос № 85859: Подскажите пожалуйста,как в компоненте treeview в заголовках пунктов меню сделать следующее:
1) первые несколько символов выделяются другим цветом.
2) первые несколько символов выделяются другим шрифтом....Вопрос № 85874: Здравствуйте.
Как можно реализовать следующее?
Если на экране присутствует форма, то ее скрыть (Hide), иначе показать (Show).
Проблемка в том как узнать открыта ли форма.......Вопрос № 85880: Здравствуйте!
Скажите пожалуйста, как в TReeView принудительно вызвать редактирование текста нода?...Вопрос № 85923: Здравствуйте. Подскажите пожалуйста такую вещь. Для программы обычного текстового редактора нужно создать функцию поиска во введенном в окно тексте самого длинного предложения. Как это можно реализовать? Заранее спасибо....
Вопрос
№ 85.859
Подскажите пожалуйста,как в компоненте treeview в заголовках пунктов меню сделать следующее:
1) первые несколько символов выделяются другим цветом.
2) первые несколько символов выделяются другим шрифтом.
Отправлен: 07.05.2007, 13:21
Вопрос задал: Lu4ina (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Архангельский Андрей Германович
Здравствуйте, Lu4ina!
В приложении фрагмент реального проекта, надеюсь идеи понятны
Приложение:
--------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 07.05.2007, 13:29 Оценка за ответ: 5 Комментарий оценки: Спасибо за исчерпывающий ответ.
Отвечает: PGM
Здравствуйте, Lu4ina!
В добавление к предыдущему ответу - чтобы только несколько символов текста менялось придется отрисовывать содержимое самому, например так
Ответ отправил: PGM (статус: 6-ой класс)
Ответ отправлен: 07.05.2007, 14:31 Оценка за ответ: 5 Комментарий оценки: Все просто и доступно даже новичку.Спасибо.
Вопрос № 85.874
Здравствуйте.
Как можно реализовать следующее?
Если на экране присутствует форма, то ее скрыть (Hide), иначе показать (Show).
Проблемка в том как узнать открыта ли форма....
Узнать видна форма или нет можно через свойство формы Visible
Form1.Visible
Или имелось в виду что-то другое?
Ответ отправил: Igor_ (статус: 2-ой класс)
Ответ отправлен: 07.05.2007, 15:00 Оценка за ответ: 5
Отвечает: Крылов Александр Владимирович
Здравствуйте, Пепеляев Александр!
Можно в модуле формы объявит булевскую переменную и при запуске, если форма должна показываться автоматически, устанавливать её значение в true. В таком случает значение true будет означать что форма показана и её надо убрать. Далее создать два обработчика - OnHide и OnShow.
var
Form1: TForm1;
IsShown:boolean; //переменая, по которой определяем показана ли форма
implementation
{$R *.dfm}
procedure TForm1.FormHide(Sender: TObject);
begin
IsShown:=false;
Self.Hide;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
IsShown:=true;
Self.Show;
end;
end.
Далее в других формах можно определять показана форма или нет можно следующим образом:
if Form1.IsShown then Form1.Hide else Form1.Show;
Но перед этим в других модулях в секции uses необходимо прописать Unit1 в разделе implementation
...
...
implementation
uses Unit1;
procedure TForm2.Button1Click(Sender: TObject);
begin
if Form1.IsShown then Form1.Hide else Form1.Show;;
end;
...
...
Ответ отправил: Крылов Александр Владимирович (статус: 4-ый класс)
Ответ отправлен: 07.05.2007, 15:22 Оценка за ответ: 5 Комментарий оценки: Спасибо.
Отвечает: Lomer
Здравствуйте, Пепеляев Александр Павлович!
Чтобы найти предыдущие формы, можно воспользоваться WINAPI функцией FindWindow:
if FindWindow(NULL,'имя_окна_т_е_заголовок_старой_формы') then Form1.Visible:=False;
else Form1.Visible:=True;
Ответ отправил: Lomer (статус: 4-ый класс)
Ответ отправлен: 07.05.2007, 15:41 Оценка за ответ: 5 Комментарий оценки: Спасибо.
Отвечает: DimonSoft
Здравствуйте, Пепеляев Александр Павлович!
В принципе, уже были предложены рабочие варианты. Но добавлю свой, особенность которого в том, что он не использует if'ов и вспомогательных переменных. Итак, в месте скрытия//показа формы напишите
YourForm.Visible:=not(YourForm.Visible);
С уважением, DimonSoft.
Ответ отправил: DimonSoft (статус: 2-ой класс)
Ответ отправлен: 07.05.2007, 17:02 Оценка за ответ: 5
Вопрос № 85.880
Здравствуйте!
Скажите пожалуйста, как в TReeView принудительно вызвать редактирование текста нода?
Отправлен: 07.05.2007, 15:32
Вопрос задал: _porodox_ (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Gh0stik
Здравствуйте, _porodox_!
Вам достаточно обратится к методу EditText.
Т.е. чтобы перейти в режим редактирования для выделенного элемента (node) достаточно вызвать: TreeView1.Selected.EditText;
Либо можно обратится по индексу noda: TreeView1.Items[3].EditText;
Для того чтобы закончить редактирование необходимо обратится к методу EndEdit(Cancel Boolean);
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 07.05.2007, 18:40 Оценка за ответ: 5
Вопрос № 85.923
Здравствуйте. Подскажите пожалуйста такую вещь. Для программы обычного текстового редактора нужно создать функцию поиска во введенном в окно тексте самого длинного предложения. Как это можно реализовать? Заранее спасибо.
Отвечает: Alexey K
Здравствуйте, SunnyKiller!
Первое
Определяем множество (set of char) символов, являющихся разделителями предложения.
Второе
Заводим счётчик начала предложения.
Алгоритм
1. Берём Строку
2. Смотрим на её первый символ, если он принадлежит множеству разделителей, то убираем его
3 Увеличиваем счётчик на единицу
4 На шаг 2, пока первый символ строки будет символом-разделителем.
5. Первый символ строки сейчас - первый символ очерёдного предложения.
6. Ищем в строке первое вхождение любого из символов-разделителей
7 .Его позиция - длина предложения + 1
8. Вырезаем из начала строки предложение
9. Увеличиваем счётчик начала предложения на количество вырезанных символов
10 на шаг 2
Ответ отправил: Alexey K (статус: 1-ый класс)
Ответ отправлен: 07.05.2007, 21:53 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо за алгоритм. А не могли бы Вы это как-нибудь оформить в виде куска программы? Потому что у меня с этим возникают проблемы.
Отвечает: Крылов Александр Владимирович
Здравствуйте, SunnyKiller!
Предложение может оканчиваться на точку, восклицательный знак и вопросительный. Это простой вариант. Вот значит и ищем по тексту одно из трёх (. ! ?). Запоминаем позицию данного символа и идём дальше. Как только нашли следующий символ (. ! ?) высчитываем количество символов между ними. И так далее до конца текста Здесь надо учесть то, что предложение может оканчиваться на троеточие, три воскл. или вопросит. знака. Значит предложение не должно содержать только эти символы (. ! ?), но оно может быть и очень маленьким
("Ёж."). Данный алгоритм не учитывает предложений с прямой речью. Таких как - Поднявшись на вершину горы он сказал: "Как всё таки красив закат в горах!"
Ответ отправил: Крылов Александр Владимирович (статус: 4-ый класс)
Ответ отправлен: 07.05.2007, 21:58 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо за алгоритм. Но нельзя ли мне получить текст программы, потому как у меня с его написанием проблемы?