Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2007, 15:04   #1
Dimixis
Пользователь
 
Аватар для Dimixis
 
Регистрация: 15.02.2007
Сообщений: 12
По умолчанию Вопросы новичка!

Я только начал изучать Делфи 7, делаю буквально первые шаги.
Попробовал написать простенькую программку, и у меня возникли некоторые вопросы.

Программка вот:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Menus;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Edit2: TEdit;
    Label2: TLabel;
    Edit1: TEdit;
    Label1: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    OBNUL: TButton;
    EXIT: TButton;
    RASCHET: TButton;
    J1: TMenuItem;
    procedure EXITClick(Sender: TObject);
    procedure OBNULClick(Sender: TObject);
    procedure RASCHETClick(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
Procedure BYTE;
var bit,byte,kb,mb,gb,tb:real;
 begin
//Ввод данных
bit:= StrToInt(Form1.Edit1.Text);
byte:=StrToInt(Form1.Edit2.Text);
kb:=StrToInt(Form1.Edit3.Text);
mb:=StrToInt(Form1.Edit4.Text);
gb:=StrToInt(Form1.Edit5.Text);
tb:=StrToInt(Form1.Edit6.Text);
//Условие:
//Если бит
if (byte=0)and(kb=0)and(mb=0)and(gb=0)and(tb=0) then
begin
byte:=bit/8;
kb:=byte/1024;
mb:=kb/1024;
gb:=mb/1024;
tb:=gb/1024;
Form1.Edit2.Text:=FloatToStr(byte);
Form1.Edit3.Text:=FloatToStr(kb);
Form1.Edit4.Text:=FloatToStr(mb);
Form1.Edit5.Text:=FloatToStr(gb);
Form1.Edit6.Text:=FloatToStr(tb);
end;
//Если байт
if (bit=0)and(kb=0)and(mb=0)and(gb=0)and(tb=0) then
begin
bit:=byte*8;
kb:=byte/1024;
mb:=kb/1024;
gb:=mb/1024;
tb:=gb/1024;
Form1.Edit1.Text:=FloatToStr(bit);
Form1.Edit3.Text:=FloatToStr(kb);
Form1.Edit4.Text:=FloatToStr(mb);
Form1.Edit5.Text:=FloatToStr(gb);
Form1.Edit6.Text:=FloatToStr(tb);
end;
//Если килобайт
if (byte=0)and(bit=0)and(mb=0)and(gb=0)and(tb=0) then
begin
byte:=kb*1024;
bit:=byte*8;
mb:=kb/1024;
gb:=mb/1024;
tb:=gb/1024;
Form1.Edit2.Text:=FloatToStr(byte);
Form1.Edit1.Text:=FloatToStr(bit);
Form1.Edit4.Text:=FloatToStr(mb);
Form1.Edit5.Text:=FloatToStr(gb);
Form1.Edit6.Text:=FloatToStr(tb);
end;
//Если мегабайт
if (byte=0)and(kb=0)and(bit=0)and(gb=0)and(tb=0) then
begin
kb:=mb*1024;
byte:=kb*1024;
bit:=byte*8;
gb:=mb/1024;
tb:=gb/1024;
Form1.Edit2.Text:=FloatToStr(byte);
Form1.Edit3.Text:=FloatToStr(kb);
Form1.Edit1.Text:=FloatToStr(bit);
Form1.Edit5.Text:=FloatToStr(gb);
Form1.Edit6.Text:=FloatToStr(tb);
end;
//Если гигабайт
if (byte=0)and(kb=0)and(mb=0)and(bit=0)and(tb=0) then
begin
mb:=gb*1024;
kb:=mb*1024;
byte:=kb*1024;
bit:=byte*8;
tb:=gb/1024;
Form1.Edit2.Text:=FloatToStr(byte);
Form1.Edit3.Text:=FloatToStr(kb);
Form1.Edit4.Text:=FloatToStr(mb);
Form1.Edit1.Text:=FloatToStr(bit);
Form1.Edit6.Text:=FloatToStr(tb);
end;
//Если терабайт
if (byte=0)and(kb=0)and(mb=0)and(gb=0)and(bit=0) then
begin
gb:=tb*1024;
mb:=gb*1024;
kb:=mb*1024;
byte:=kb*1024;
bit:=byte*8;

Form1.Edit2.Text:=FloatToStr(byte);
Form1.Edit3.Text:=FloatToStr(kb);
Form1.Edit4.Text:=FloatToStr(mb);
Form1.Edit5.Text:=FloatToStr(gb);
Form1.Edit1.Text:=FloatToStr(bit);
end;

end;


//Кнопка выход
procedure TForm1.EXITClick(Sender: TObject);
begin
close;
end;

//Кнопка обнуления
procedure TForm1.OBNULClick(Sender: TObject);
begin
Form1.Edit1.Text:='0';
Form1.Edit2.Text:='0';
Form1.Edit3.Text:='0';
Form1.Edit4.Text:='0';
Form1.Edit5.Text:='0';
Form1.Edit6.Text:='0';
end;

//Кнопка рассчета
procedure TForm1.RASCHETClick(Sender: TObject);
begin
BYTE;
end;

end.
Возникли следуюшие вопросы:
1)Как сделать так, чтобы в полях ввода можно было вводить только цифры?
2)Как сделать так, чтобы расчет производился не только по нажатию кнопки, но и по нажатию ENTER.
3)Как сделать окошко (например о программе), и как его вызывать через команду в меню?
4)Я вообще правильно пишу прогу? (сама структура проги)
5)Как сделать так, чтобы если нажал кнопку рассчет, она становилсь неактивной до тех пор, пока не нажмешь обнулить?

Прошу написать как все это реализовать.

Вот на всякий случай сам проект:
Вложения
Тип файла: rar Konvertor.rar (21.7 Кб, 17 просмотров)
Dimixis вне форума Ответить с цитированием
Старый 11.06.2007, 15:38   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Тебе бы книгу по Delphi7 купить, или скачай в инете.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 11.06.2007, 15:55   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Ладно отвечу:
1. Читай до конца http://www.programmersforum.ru/showthread.php?t=4535
2. Смотри там же
3. Функция MessageDlg параметры смотри в хелпе (это если о программе), если же полноценное окно то file>new form или file>new frame
4. Раз компилируется значит правильно
5. Свойство кнопки Enabled
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 11.06.2007 в 16:07.
mutabor вне форума Ответить с цитированием
Старый 11.06.2007, 16:20   #4
Dimixis
Пользователь
 
Аватар для Dimixis
 
Регистрация: 15.02.2007
Сообщений: 12
По умолчанию

Огромное спасибо. Со всем разобрался, кроме пункта номер 1
Dimixis вне форума Ответить с цитированием
Старый 11.06.2007, 16:53   #5
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Используй вместо TEdit TMaskEdit.
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.
VVM вне форума Ответить с цитированием
Старый 11.06.2007, 17:51   #6
Dimixis
Пользователь
 
Аватар для Dimixis
 
Регистрация: 15.02.2007
Сообщений: 12
По умолчанию

Это ты про что?
Dimixis вне форума Ответить с цитированием
Старый 11.06.2007, 18:47   #7
InternetStranger
php / delphi
Форумчанин
 
Аватар для InternetStranger
 
Регистрация: 10.06.2007
Сообщений: 175
По умолчанию

Можно в принципе решить задачу "в лоб":
у Tedit есть свойство OnChange - контролирует любое изменение в едите! Для этого свойства пишешь обработчик содержимого.
Не цифры можно проконтролировать
if not(s[i] in '0'..'9') then ...
G.Azamat { Web Development / Computer simulation }
Начинающий программист думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра.
InternetStranger вне форума Ответить с цитированием
Старый 11.06.2007, 19:21   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

а лучше в OnKeyDown/OnKeyPress смотреть что нажато и если не цифра, то Key := 0/#0
pu4koff вне форума Ответить с цитированием
Старый 11.06.2007, 20:27   #9
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Все верно, только OnChange это не свойство, а событие. Различать надо
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 11.06.2007, 22:46   #10
InternetStranger
php / delphi
Форумчанин
 
Аватар для InternetStranger
 
Регистрация: 10.06.2007
Сообщений: 175
По умолчанию

Цитата:
Сообщение от mutabor Посмотреть сообщение
Все верно, только OnChange это не свойство, а событие. Различать надо
Заболтали меня. вот пальцы об клаву заплетаются.
G.Azamat { Web Development / Computer simulation }
Начинающий программист думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра.
InternetStranger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы новичка(C++) NetGod Общие вопросы C/C++ 22 17.04.2009 22:49
Два вопроса новичка по графике. grey Помощь студентам 7 04.11.2007 17:48
Вопрос (новичка) по переменным. grey Помощь студентам 5 03.11.2007 17:25
Литература для новичка Deikwon PHP 1 23.09.2007 00:51