Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/33: Рейтинг темы: голосов - 33, средняя оценка - 4.91
Junior Developer
 Аватар для velikijmerlin
44 / 44 / 7
Регистрация: 08.06.2009
Сообщений: 261

Собственный дизайн формы

17.08.2009, 22:35. Показов 6632. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, возник такой вот вопрос, как имея свой нарисованный интерфейс, поставить этот интерфейс на форму, и чтобы кнопки и все элементы, которые будут располагаться на форме также имели бы дизайн который был нарисован для программы...


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



а вот сам код программы, но в нём нет ошибок...

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, sSkinProvider, sSkinManager, ExtCtrls, sPanel, StdCtrls, Mask,
  sMaskEdit, sCustomComboEdit, sCurrEdit, sEdit, sLabel, sCheckBox,Math;
 
type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    sSkinProvider1: TsSkinProvider;
    sEdit1: TsEdit;
    sLabel1: TsLabel;
    sEdit2: TsEdit;
    sCheckBox1: TsCheckBox;
    sEdit3: TsEdit;
    procedure sCheckBox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.sCheckBox1Click(Sender: TObject);
begin
  if sCheckBox1.Checked = true then
        sEdit3.Enabled:= true;
  if StrToFloat(sEdit3.Text) > 0 then
   sEdit2.Text:=FloatToStr(Power(StrToFloat(sEdit1.text), StrToFloat(sEdit3.text)));
end;
 
end.
помогите кто знает в чём проблема.... либо решить проблему с ошибкой(что хотелось бы, потому что интерфейс очень уж красивый...)
или подскажите как поставить свой...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.08.2009, 22:35
Ответы с готовыми решениями:

Свой собственный дизайн компонентов. В каком направлении двигаться и с чего начать?
Есть ли возможность в рамках билдера 10-го года создавать компоненты оформления приложений со своим собственным дизайном? Хотелось бы...

Собственный объект формы
Уважаемые форумчане. Прошу помощи, или скажите, что это невозможно:( Есть форма, не ней много контролов, в том числе ТекстБоксы....

Собственный вид окошка формы
Добрый вечер! Прочитал некоторые похожие топики на этом форуме, но не нашел ответа на вопрос. Как при отключенном...

12
Programmer
 Аватар для DannerDOS
40 / 40 / 6
Регистрация: 07.04.2009
Сообщений: 187
17.08.2009, 23:18
У тебя видимо неправильное представление вещественного числа... Попробуй обрабатывать исключительные ситуации с твоими полями...

Добавлено через 8 минут 54 секунды
Delphi
1
2
if StrToFloat(sEdit3.Text) > 0 then //Если у тебя правельная запись в sEdit3
   sEdit2.Text:=FloatToStr(Power(StrToFloat(sEdit1.text), StrToFloat(sEdit3.text))); //Если правельная формула
Попробуй так:
Delphi
1
2
3
4
5
6
7
Try If StrToFloat(sEdit3.Text) > 0 then begin
  sEdit2.Text := FloatToStr(Power(StrToFloat(sEdit1.text), StrToFloat(sEdit3.text)));
end;
Except
  ShowMessage('Исходные данные неверны');
  Halt;
end;
А со скинами проблем быть недолжно...
0
Junior Developer
 Аватар для velikijmerlin
44 / 44 / 7
Регистрация: 08.06.2009
Сообщений: 261
17.08.2009, 23:35  [ТС]
эм, а ничего что в начале, как только запускаеться прога у меня ничего нету в Эдитах? а пользователь сначал должен нажать чекбокс, потом ввести в эдит 3 число, затем в эдит 1 число, и получить ответ в эдит 3...
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
18.08.2009, 07:44
а пользователь сначал должен нажать чекбокс, потом ввести в эдит 3 число, затем в эдит 1 число, и получить ответ в эдит 3...
Это что же тогда будет считать прога, пустые ячейки? Я же писал тебе в предыдущей теме. Ввводишь числа в Эдит1 и Эдит3(раз уж они в таком порядке у тебя), потом жмешь Чекбокс. В Эдит2 получаешь результат. Чтоб не путаться, над Эдитами сделай в Лабелях поясняющие надписи, ввести первое число, ввести второе число, результат. В кэпшен чекбокса напиши типа Посчитать!
0
Junior Developer
 Аватар для velikijmerlin
44 / 44 / 7
Регистрация: 08.06.2009
Сообщений: 261
18.08.2009, 09:11  [ТС]
я сделал так что если не нажат чекбокс, то поле эдит 3 закрыто...

а если допустим, ввести в эдиты такое - #0

тогда строка не будет пуста?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
18.08.2009, 09:16
я сделал так что если не нажат чекбокс, то поле эдит 3 закрыто...
Ну и зачем тогда на этот чекбокс повесили выполнение действий? Поставьте тогда еще кнопку и по ней выполняйте вычисления.
0
Junior Developer
 Аватар для velikijmerlin
44 / 44 / 7
Регистрация: 08.06.2009
Сообщений: 261
18.08.2009, 09:21  [ТС]
всё работает если ввести числа сначала, а потом только посчитать, т.е сначала надо ввести числа, а потом нажимать на чекбокс...

а у меня была задумка такая, что сначала выбирается действие(чекбокс), и рядом с ним загорается эдит, и только тогда(!) когда всё три эдита в рабочем состоянии вводить числа...

как вот это можно организовать?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
18.08.2009, 09:24
Сделайте так, и не экономьте на процедурах.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit3.Enabled:=false;  //выключаем Эдит
end;
 
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked = true then //включаем
Edit3.Enabled:= true;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
if StrToFloat(Edit3.Text) > 0 then    //считаем
Edit2.Text:= FloatToStrF(Power(StrToFloat(Edit1.text),StrToFloat(Edit3.text)),ffFixed,8,4)
else Showmessage('Введено неверное значение в Edit3!');  //если введено не положительное число
end;
0
Junior Developer
 Аватар для velikijmerlin
44 / 44 / 7
Регистрация: 08.06.2009
Сообщений: 261
18.08.2009, 09:49  [ТС]
ок)))

пасиб..)))
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
18.08.2009, 09:52
Кстати, если использовать функцию Power, то можно возводить и в нулевую и отрицательную степень и числа тоже любые.
0
Junior Developer
 Аватар для velikijmerlin
44 / 44 / 7
Регистрация: 08.06.2009
Сообщений: 261
18.08.2009, 10:56  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
Кстати, если использовать функцию Power, то можно возводить и в нулевую и отрицательную степень и числа тоже любые.
хмм... вот этого не знал..)))
т.е тогда проверка на положительность не нужна, правильно?)
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
18.08.2009, 11:17
т.е тогда проверка на положительность не нужна, правильно?)
Правильно. Ведь можно же возвести число 8 в степень -3? будет 0,5. Для интереса найдите у себя модуль Math, и посмотрите как написана функция Power. Там предусмотрены все комбинации с основанием степени и степегнью. Такую функцию кстати несложно и самому написать.

Добавлено через 2 минуты 20 секунд
Вот так это выглядит.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function Power(const Base, Exponent: Extended): Extended;
begin
  if Exponent = 0.0 then
    Result := 1.0               { n^0 = 1 }
  else if (Base = 0.0) and (Exponent > 0.0) then
    Result := 0.0               { 0^n = 0, n > 0 }
  else if (Frac(Exponent) = 0.0) and (Abs(Exponent) <= MaxInt) then
    Result := IntPower(Base, Integer(Trunc(Exponent)))
  else
    Result := Exp(Exponent * Ln(Base))
end;
 
function IntPower(X: Extended; I: Integer): Extended;
var
  Y: Integer;
begin
  Y := Abs(I);
  Result := 1.0;
  while Y > 0 do begin
    while not Odd(Y) do
    begin
      Y := Y shr 1;
      X := X * X
    end;
    Dec(Y);
    Result := Result * X
  end;
  if I < 0 then Result := 1.0 / Result
end;
0
Junior Developer
 Аватар для velikijmerlin
44 / 44 / 7
Регистрация: 08.06.2009
Сообщений: 261
18.08.2009, 11:44  [ТС]
понятно)))

всем спасибо)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.08.2009, 11:44
Помогаю со студенческими работами здесь

Перемещение формы через собственный класс
Написал класс для динамического создания форм-подсказок. Подсказки появляются нормально, но когда я начинаю ее двигать по экрану (см....

Собственный стиль для формы обратной связи
Уважаемые форумчане, подскажите пожалуйста как стилизовать под определенные рамки форму &quot;Заказать звонок&quot; использован плагин...

Как создать собственный шаблон формы в visual studio
Здрасте. В общем нужны лавры DevExpress'а, у которого при добавлении проекта запускается мастер который позволяет пользователю...

Дизайн формы
Задался таким вопросом, можно ли поменять дизайн формы создаваемой программы? А то видеть стандартные win-овские формочки надоело. И в...

Дизайн формы
Подскажите, пожалуйста, через что делается, такой дизайн или похожий (на примере Game Booster) в delphi. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru