Вопрос № 36735: Здравствуйте эксперты!!
Подскажите пожалуйста каким образом нарисовать график по заданной функции??...Вопрос № 36739: Даров, Эксы. Вопрос на 100 баллов: Как в ListView'е (Viewstyle="vsReport)" изменить цвет шрифта у определенной строки?...Вопрос № 36747: Здравствуйте Уважаемые Эксперты! У меня к Вам несколько вопросов:
1. В меню Delphi 7 была функция поиска компонентов, набрал название компонента нажал OK и он на форме, если такая функция в Borland Developer Studio 2006? А то я ее чегото не могу ...Вопрос № 36799: Возможно банальный вопрос, но меня интересует пример размещения на рисунке TImage компонентов TEdit. Т.е. суть заключается в том, чтобы на рисунке отрисовывать, например квадратики с полями для ввода. Слышал, что под рисунок подкладывают компонент TP...
Вопрос № 36.735
Здравствуйте эксперты!!
Подскажите пожалуйста каким образом нарисовать график по заданной функции??
Отправлен: 04.03.2006, 16:20
Вопрос задал: F Ruslan R (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Лучников Юрий Владимирович
Здравствуйте, F Ruslan R!
Самый простой способ воспользоваться компонентом TChart с вкладки Additional. Данный компонент представляет из себя гибкий инструмент для отображения всевозможных графиков, диаграмм...
Краткое руководство:
1)Щелкаете по положенной на форме компоненте двойным кликом
2)Жмете кнопочку Add... для добавления серии. По умолчанию ей будет присвоено название Series1.
3) Далее с помощью метода Series1.AddXY() рисуете график нужной функцией к примеру вот так: for i := 1 to 30 do Series1.AddXY(i, func(i), '', clBlack); где i это X, а func(i) - значение нужной функции в точке X.
Отвечает: Ерёмин Андрей
Здравствуйте, F Ruslan R!
Можно по разному. Если самостоятельно рисовать график, то нужно для каждой точки X в цикле для Form.Canvas (или другого объекта) просчитать значение Y по формуле, а затем закрасить точку цветом: Form.Canvas.Pixels[X,Y]:=clBlack; А лучше воспользоваться готовыми компонентами - EGraph например, очень мощный компонент для построения графиков. Также есть встроенный TChart.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Отправлен: 04.03.2006, 17:10 Оценка за ответ: 5
Отвечает: Alex_Nick
Здравствуйте, F Ruslan R!
на форму бросаем paintbox и button
для функции Y=sqrt(x) следующий обработчик нажатия кнопки:
procedure TForm1.Button1Click(Sender: TObject);
var X:integer;
begin
X:=0;
paintbox1.Canvas.MoveTo(X,paintbox1.Height div 2);
for X:=0 to 200 do begin
paintbox1.Canvas.lineto(X,paintbox1.Height div 2-round(sqrt(X)));
end;
end;
график функции строим путем перебора X от 0 до 200;
paintbox1.Height div 2-round(sqrt(X)) - это означает "на sqrt(X) выше середины paintbox1". по этому принципу двигаем начало координат как по вертикали, так и по горизонтали.
вроде всё.
Ответ отправил: Alex_Nick (статус: 1-ый класс)
Отправлен: 04.03.2006, 19:07 Оценка за ответ: 5
Отвечает: Diman_A
Здравствуйте, F Ruslan R!
В приложении функция, строящая график прямо на форме.
Приложение:
Ответ отправил: Diman_A (статус: 6-ой класс)
Отправлен: 05.03.2006, 06:48
Вопрос № 36.739
Даров, Эксы. Вопрос на 100 баллов: Как в ListView'е (Viewstyle="vsReport)" изменить цвет шрифта у определенной строки?
Приложение:
Отправлен: 04.03.2006, 16:32
Вопрос задал: [Bruder] (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: Ерёмин Андрей
Здравствуйте, [Bruder]!
Очень легко. Нужно просто обрабатывать событие OnCustomDrawItem. Вот пример:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); var X: Integer; begin X:=255-(Item.Index*25); ListView1.Canvas.Font.Color:=RGB(X,255-X,255-X); end;
Не обращайте внимание на первую строку - это просто формула, придуманная мной наугад, чтобы числовые значения цвета получились разные. После этого запустите и посмотрите, что получится :-)
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Отправлен: 04.03.2006, 17:06 Оценка за ответ: 4 Комментарий оценки: Это я пробовал... проблема в том, что мне надо ТОЛЬКО ОДНУ (определённую) СТРОКУ! А в Вашем варианте я не могу контролировать процесс... да и изменяется всё подряд... хотя красиво )))
Отвечает: Alex_Nick
Здравствуйте, [Bruder]!
ставим ownerdraw для listview в true;
пишем обработчик ondrawitem для listview:
procedure TForm1.ListView1DrawItem(Sender: TCustomListView;
Item: TListItem; Rect: TRect; State: TOwnerDrawState);
begin
randomize;
listview1.Canvas.Font.Color:=random(maxint);
ListView1.Canvas.TextRect(rect,rect.Left+1,rect.Top+1,item.Caption);
end;
вместо random(maxint) ставим нужный цвет в зависимости, например, от item.Caption
Ответ отправил: Alex_Nick (статус: 1-ый класс)
Отправлен: 04.03.2006, 19:37 Оценка за ответ: 5 Комментарий оценки: пойдёт ))
Вопрос № 36.747
Здравствуйте Уважаемые Эксперты! У меня к Вам несколько вопросов:
1. В меню Delphi 7 была функция поиска компонентов, набрал название компонента нажал OK и он на форме, если такая функция в Borland Developer Studio 2006? А то я ее чегото не могу найти.
2. Как сделать, чтобы приложения Windows Net и C# Builder выглядели в стиле XP? Почемуто даже при добавлении XP Manifest c помощью программы XPManifest приложения выглядят как будто Manifest и не добавляли.
3. Кто нибудь переустанавливал компоненты AnimatedMenus_2000 c Delphi 7 на BDS 2006? У меня выдаёт сообшение "Ошибка Не найден файл 'DsgnInf.dcu'" хотя в Delphi 7 ни каких ошибок не выдавало. Если кто знает в чем загвоздка помогите.
4. Как можно сделать, чтобы при запуске программы появлялась не стандартная форма, а другая нарисованная. Или есть такой компонент которому задал адрес изображения формы, кнопок и т.д. и т. п., а он сам все сделает и где его скачать, если нету то пожалуйсто как это все сделать программно.
Заранее Спасибо.
Отвечает: Diman_A
Здравствуйте, Шишкин М.А.!
Не знаю, почему у Вас Animated menus установились на d7, а на BDS не хотят, но эта проблема традиционно решается так:
1) Смотрим в секцию uses во всех pas файлах, ищем "Dsgnintf". Если нашли, то удаляем, и пишем вместо него 2 модуля :DesignIntf и DesignEditors. (естественно, через запятую).
2) После этого займемся файлом dpk. При попытке установить пакет Дельфя может жаловаться на отсутствие файла proxies.pas. Но ни в виде скомпилировнного DCU-файла, ни в виде исходного PAS-файла вы его не найдете, так как он поставляется только в виде кода, включенного в файл DesignIde.DCP. Чтобы включить пакет DesignIde.DCP в наш проект, можно в окне редактора щелкнуть правой кнопкой мыши на пункте "Requires" ("Требуются"), в открывшемся меню выбрать "Add...", перейти в каталог
$(Delphi)Lib, найти и выбрать файл designide.dcp, после чего закрыть окно нажатием кнопки "Ok". Вы увидите, что выбранный модуль добавился в секцию "Requires" нашего проекта.
После этих плясок с бубном мне удавалось поставить на новую delphi старые компоненты, например, skinengine.
Но если все по-прежнему, то пошлите по вн. почте ваш email, я вам вышлю статью, с помощью которой можно все-таки поставить нужные компоненты.
Насчет нестандартной формы: существует много скиновых пакетов, но я остановил свой взгляд на suipack (www.sunisoft.com). Там есть спец. программа, с помощью которой вы и склепаете свой скин, а также около 20 готовых скинов.
Ответ отправил: Diman_A (статус: 6-ой класс)
Отправлен: 05.03.2006, 13:43
Вопрос № 36.799
Возможно банальный вопрос, но меня интересует пример размещения на рисунке TImage компонентов TEdit. Т.е. суть заключается в том, чтобы на рисунке отрисовывать, например квадратики с полями для ввода. Слышал, что под рисунок подкладывают компонент TPanel но как сделать в общем-то не знаю. Еще одно пожелание - желательно,чтобы квадратик с полем ввода был описан как класс. Спасибо.
Отправлен: 05.03.2006, 12:59
Вопрос задал: Master135 (статус: Студент)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Ерёмин Андрей
Hello, Master135!
Я не совсем понял вопрос, но постараюсь помочь. Я так понял, вам нужны рисованные поля ввода? Это делается примерно так (на конкретном примере):
1) Кладём TEdit на форму и изменяем свойства:
Left = 120, Top = 96, Width = 40, Height = 21, Borderstyle="bsNone."
2) Помещаем на форму TShape и тоже изменяем свойства:
Left = 119, Top = 95, Width = 42, Height = 23, Pen.Color = clRed.
Вот и получилось поле ввода с красной рамкой. Смысл заключается в том, что у TEdit все границы убираются (свойство BorderStyle), а вокруг можно делать всё, что угодно. Если требовалось другое, прошу объяснить более точно, или же (что ещё лучше) - привести скриншот того, что примерно должно получиться.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Отправлен: 05.03.2006, 14:58
Отвечает: Злоумышленник
Здравствуйте, Master135!
У меня была подобная задача, только вместо Эдитов - Lable'ы. В твоём случае надо так, наверное. Делаешь панель, на неё кидаешь Image1, свойство Image1.Align := alClient, Image1.Stretch := true, это в инспекторе объектов всё. Затем на панель кидаешь Эдиты и ставишь их Visible в false (невидимые). Естественно в проге в любой момент ты их сможешь сделать видимыми и изменить местоположение с помощью с-ств Edit1.Top, Edit1.Left
{...чтобы квадратик с полем ввода был описан как класс...} - это уже перегиб :)
--------- Почему нет встроенного языка 1С на мордовском? Было бы клёво!
Ответ отправил: Злоумышленник (статус: 4-ый класс)
Отправлен: 05.03.2006, 18:22 Оценка за ответ: 3 Комментарий оценки: Это я все знаю, но ведь я недаром просил, сделать класс, ведь все эти лабелы-едиты добавляються динамически. Класс - это не перегиб - это норма приличного программирования.