Вопрос № 22886: Здравствуйте!
MDI приложение, есть кнопка в родительском окне, которая должна запускать функцию активного дочернего окна. Т.е. надо сделать примерно как в word-е щелкаешь по кнопке "выравнивание" текс в активном окне выравниваеться, щел...Вопрос № 22908: SheLListView1.root:=edit1.text;
Почему не работает?Как сделать чтобы работало?...Вопрос № 22916: Доброе время суток эксперты!
Как говориться "Век живи век учись".
Пишу чат и возник вопрос по ToolBar'aм, короче почему в Delphi Тулбар просто из монотонного цвета? А если смотреть на другие приложения сделанные в VC++, VB и.т.п то ...
Вопрос № 22.886
Здравствуйте!
MDI приложение, есть кнопка в родительском окне, которая должна запускать функцию активного дочернего окна. Т.е. надо сделать примерно как в word-е щелкаешь по кнопке "выравнивание" текс в активном окне выравниваеться, щелкаешь "увеличить шрифт" он увеличиваеться. Зарание спасибо.
Отправлен: 30.06.2005, 09:20
Вопрос задал: Pnck (статус: Посетитель)
Всего ответов отправлено: 5
Отвечает: sir henry
Здравствуйте, Pnck!
Функция будет зависеть от того компонента который Вы используете для отображения текста. Напишите какой у Вас.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 30.06.2005, 09:37 Оценка за ответ: 4 Комментарий оценки: Вопрос вообще не в тексте, а в первом предложении!
Отвечает: Jadd
Здравствуйте, Pnck!
Очень просто. Рассмотрим два случая. Первый. Предположим, что дочерние окна у нас одного типа. Тогда задача выполняется так:
var
child: TForm;
begin
child := Form1.ActiveMDIChild;
child.MyMethod;
end;
Естесственно, что child будет показывать только методы TForm. Чтобы увидеть наши методы, нам нужно указатель привести к типу дочернего окна, т.е.
(TMyChild (child)).MyMethod; Хотя компиллер и так сработает.
Второй случай - когда MDI дочки разного типа (например, одна дочка текстовое окно, а другая содержит элементы диалога). В этом случае нам нужно их как-то определять. Тут нам поможет такой подход:
var
child: TForm;
begin
child := Form1.ActiveMDIChild;
if (child is TDialogChild) then
(TDialogChild(child)).MyDialogMethod;
if (child is TWordChild) then
(TWordChild(child)).MyWordMethod;
end;
Хоть эти примеры и вызывают методы, доступ к полям класса производится точно так же. Подробнее читай в разделе посвященном RTTI и ООП.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Студент)
Отправлен: 30.06.2005, 10:10
Отвечает: Tsechoev Bagaudin
Здравствуйте, Pnck!
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
if FontDialog1.Execute then
(Form1.ActiveMDIChild.ActiveControl as TRichEdit).Font := FontDialog1.Font;
end;
Form1 - это MDI форма. На ней есть FontDialog. На дочерней только RichEdit.
После нажатия кнопки запускается FontDialog выбираешь шрифт, размер, стиль и т.д.
На дочерней форме есть только один control RichEdit поэтому я выбрал свойство ActiveControl если присутствует еще контролы то обращайся по индексу, например:
procedure TForm1.ToolButton1Click(Sender: TObject);
var
i: integer;
begin
for i:= 0 to Form1.ActiveMDIChild.ControlCount - 1 do
begin
if Form1.ActiveMDIChild.Controls[i] is TRichEdit then
(Form1.ActiveMDIChild.Controls[i] as TRichEdit).SetFocus;
end;
if FontDialog1.Execute then
(Form1.ActiveMDIChild.Controls[0] as TRichEdit).Font := FontDialog1.Font;
end;
Вроде понятно. Удачи!
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: 6-ой класс)
Отправлен: 30.06.2005, 10:12
Отвечает: Gin
Здравствуйте, Pnck!
procedure TForm1.ALeftExecute(Sender: TObject);
begin
RichEdit1.Paragraph.Alignment:=taLeftJustify;
ALeft.Checked:=true;
end;
procedure TForm1.ACenterExecute(Sender: TObject);
begin
RichEdit1.Paragraph.Alignment:=taCenter;
ACenter.Checked:=true;
end;
procedure TForm1.ARightExecute(Sender: TObject);
begin
RichEdit1.Paragraph.Alignment:=taRightJustify;
ARight.Checked:=true;
end;
procedure TForm1.ABulletExecute(Sender: TObject);
begin
if(ABullet.Checked) then
RichEdit1.Paragraph.Numbering:=nsNone
else RichEdit1.Paragraph.Numbering:=nsBullet;
ABullet.Checked:=not ABullet.Checked;
end;
procedure TForm1.ABoldExecute(Sender: TObject);
begin
ABold.Checked := not ABold.Checked;
if ABold.Checked
then RichEdit1.SelAttributes.Style :=
RichEdit1.SelAttributes.Style + [fsBold]
else RichEdit1.SelAttributes.Style :=
RichEdit1.SelAttributes.Style - [fsBold];
end;
procedure TForm1.AItalicExecute(Sender: TObject);
begin
AItalic.Checked := not AItalic.Checked;
if AItalic.Checked
then RichEdit1.SelAttributes.Style :=
RichEdit1.SelAttributes.Style + [fsItalic]
else RichEdit1.SelAttributes.Style :=
RichEdit1.SelAttributes.Style - [fsItalic];
end;
procedure TForm1.AUnderlineExecute(Sender: TObject);
begin
AUnderline.Checked := not AUnderline.Checked;
if AUnderline.Checked
then RichEdit1.SelAttributes.Style :=
RichEdit1.SelAttributes.Style + [fsUnderline]
else RichEdit1.SelAttributes.Style :=
RichEdit1.SelAttributes.Style - [fsUnderline];
end;
С Уважением, Gin.
Ответ отправил: Gin (статус: Студент)
Отправлен: 30.06.2005, 12:20 Оценка за ответ: 4 Комментарий оценки: Я ничего не понял. Пожалусто, оставьте коментарии.
Отвечает: Denisss
Здравствуйте, Pnck!
В папке <Delphi>DemosDocTextEdit есть отличный пример, как раз на Ваш вопрос
Ответ отправил: Denisss (статус: 8-ой класс)
Отправлен: 01.07.2005, 16:37 Оценка за ответ: 4 Комментарий оценки: Отличный пример! Но с объяснениями как он устроен было бы вообще шикарно!
Вопрос № 22.908
SheLListView1.root:=edit1.text;
Почему не работает?Как сделать чтобы работало?
Отправлен: 30.06.2005, 16:21
Вопрос задал: Sassoft (статус: Посетитель)
Всего ответов отправлено: 4
Отвечает: Gin
Здравствуйте, Sassoft!
Вы нигде не ошиблись? Попробуйте так:
ListView1.Caption := Edit1.Text;
С Уважением, Gin.
Ответ отправил: Gin (статус: Студент)
Отправлен: 30.06.2005, 17:36
Отвечает: Ерёмин Андрей
Здравствуйте, Sassoft!
Вы будете смеяться, но у меня это нормально работает :) Проверьте, верный ли путь вводится в Edit1. Попробуйте взять этот путь в кавычки.
--------- Если б не было бы глюка, жизнь была б такая скyка...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 30.06.2005, 19:16
Отвечает: Tsechoev Bagaudin
Здравствуйте, Sassoft!
свойство root компонента SheLListView устанавливает начальную директорию для него. И если edit1.text = существуещей на компе директории, то никаких проблем быть не может.
Удачи!
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: 6-ой класс)
Отправлен: 01.07.2005, 01:25
Отвечает: streetcat
Здравствуйте, Sassoft!
че это оно не работает? Че говорит? Че вообще-то надо?
точнее задай вопрос.
если нада папку в shelllistview поменять, то должно работать. Если не работает,то значит не в этой строке ошибка.
--------- WinERROR: Keyboard not detected. Press Enter to continue
Ответ отправил: streetcat (статус: 7-ой класс)
Отправлен: 04.07.2005, 19:02
Вопрос № 22.916
Доброе время суток эксперты!
Как говориться "Век живи век учись".
Пишу чат и возник вопрос по ToolBar'aм, короче почему в Delphi Тулбар просто из монотонного цвета? А если смотреть на другие приложения сделанные в VC++, VB и.т.п то они градиентные.
Вопрос: Как сделать чтоб они были градиентные?
Отправлен: 30.06.2005, 21:46
Вопрос задал: Delphin (статус: 7-ой класс)
Всего ответов отправлено: 6
Отвечает: Jadd
Здравствуйте, Delphin!
Ну, во-первых, есть CoolBar, который позволяет менять бэкграунд бара. Потом у ToolBar есть событие OnCutomDraw, в котором ты можешь определить свой собственный вид тулбара.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Студент)
Отправлен: 30.06.2005, 22:45 Оценка за ответ: 2 Комментарий оценки: я знаю про все это. Наверно я не точно задал вопрос надо было спросить что я нетак сделали что поправить. А что в него рисовать можно и менять цвет это я знаю.
Отвечает: Ерёмин Андрей
Здравствуйте, Delphin!
Скачайте какой-нибудь компонент, который делает градиенты и поместите его на toolbar. Один из таких компонентов - TGradient (http://www.delphiarea.com/).
--------- Если б не было бы глюка, жизнь была б такая скyка...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 01.07.2005, 07:37 Оценка за ответ: 1 Комментарий оценки: Я спросил как сделать. Наверно понятно что я знаю про всякие компоненты. А теперь запусти Delphi и попробуй поместить туда компонент так чтоб он был под кнопками. А потом советуй. Если так то надо перерисовать весь тулбар.
Отвечает: -[tr1pl3x]-
Здравствуйте, Delphin!, Зайди на www.torry.net, в поиске нипиши "TollBar" (Без ковычек соответственно) и качай. Найдёш себе на вкус и цвет.
Ответ отправил: -[tr1pl3x]- (статус: 1-ый класс)
Отправлен: 01.07.2005, 10:56 Оценка за ответ: 1 Комментарий оценки: Ты мне ничего не сказал. Наверно из моего статуса (6 класс) видно что я знаю про torry.net и поисковики. Мне нужен стандартный тулбар а не замена.
Отвечает: Denisss
Здравствуйте, Delphin!
Э-Эх!!! И почему это, по Вашему, эксперты должны быть еще и экстрасенсами и читать Ваши мысли на расстоянии?!
Я создал в MS VC++ v.6.0 Enterprize проект, в котором разместил ToolBar и почему-то он не залит никаким градиентом?!
Поэтому буду только пытаться догадываться:
Во-первых, у Вас Windows XP
Во-вторых, у Вас не стандартная тема?! (Например, стоит StyleXP)
В-третьих, у Вас MS VC++, версии > 6.0
Если это так и у Вас стоит Delphi 7 или Выше (но не ниже), то можете исправить ситуацию, положив на форму компоненту TXPManifest (на закладке Win32).
Если у Вас версия Delphi ниже, то Вам придется искать ее заменитель под нее самостоятельно (а такие в интернете мне встречались).
Почему так происходит?!:
Скорее всего, Ваш VC++ добавляет в ресурсы программы этот самый манифест самостоятельно, без участия программиста.
Ответ отправил: Denisss (статус: 8-ой класс)
Отправлен: 01.07.2005, 17:05 Оценка за ответ: 3 Комментарий оценки: Хотябы что-то написал. У меня XP стоит стандартная голубая тема и манифест кинут на форму :). Так вот представте себе все решилось компиляцией проекта в Delphi 2005 а не в Delphi 7.
Отвечает: Gin
Здравствуйте, Delphin!
Смотрите приложение.
С Уважением, Gin.
Приложение:
Ответ отправил: Gin (статус: Студент)
Отправлен: 01.07.2005, 19:25 Оценка за ответ: 4 Комментарий оценки: Ну исходник для заливки формы но спасибо все равно. А все уже решилось использованием Delphi 2005 :)))
Отвечает: streetcat
Здравствуйте, Delphin!
Бери обычный тулбар и рисуй градиент на его канве. А вообще поищи тулбары с рисунками и градиентами в сети.
--------- WinERROR: Keyboard not detected. Press Enter to continue
Ответ отправил: streetcat (статус: 7-ой класс)
Отправлен: 04.07.2005, 19:02