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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2012, 14:35   #1
tarasov_88
Пользователь
 
Регистрация: 07.09.2012
Сообщений: 17
По умолчанию запрет на ввод Edit не даты (Delphi)

Добрый день, как в процедуру:

Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
     if not (Key in [#8, '0'..'9', '.']) then
     begin
     ShowMessage('Недопустимый символ: '+ Key +#13#10+'Введите дату в формате: 01.01.2012');
     Key := #0;
     end
end;
Добавить запрет на Ввод не даты(в формате xx.xx.xxxx), а например просто цифр?

Ну или другим путем, что если не получается извлечь из Edit дату, то выводить ShowMessage ....
tarasov_88 вне форума Ответить с цитированием
Старый 13.09.2012, 14:40   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Может проще воспользоваться TDateTimePicker ?
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 13.09.2012, 14:52   #3
tarasov_88
Пользователь
 
Регистрация: 07.09.2012
Сообщений: 17
По умолчанию

Цитата:
Сообщение от whatever Посмотреть сообщение
Может проще воспользоваться TDateTimePicker ?
Я в Edit свою дату ввожу,отличную от сегодняшней. Я не знаю как TDateTimePicker воспользоваться в этом случае

понял о чем вы, но уже весь код на Edit завязан, эта только его маленькая часть.

Последний раз редактировалось tarasov_88; 13.09.2012 в 14:56.
tarasov_88 вне форума Ответить с цитированием
Старый 13.09.2012, 15:04   #4
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    DateTimePicker1: TDateTimePicker;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  showmessage(datetostr(DateTimePicker1.DateTime));
end;

end.
problem?
Изображения
Тип файла: jpg 1.JPG (24.2 Кб, 187 просмотров)
Тип файла: jpg 2.1.JPG (22.7 Кб, 172 просмотров)
Тип файла: jpg 2.jpg (32.5 Кб, 165 просмотров)
Тип файла: jpg 3.JPG (15.6 Кб, 177 просмотров)
Тип файла: jpg 4.JPG (23.6 Кб, 178 просмотров)
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 13.09.2012, 15:20   #5
tarasov_88
Пользователь
 
Регистрация: 07.09.2012
Сообщений: 17
По умолчанию

Yes, I have a BIG problem with using TDateTimePicker )

Код:
unit Unit4;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DateUtils, ExtCtrls, ComCtrls, Mask;

type
  TForm4 = class(TForm)
    GroupBox5: TGroupBox;
    GroupBox4: TGroupBox;
    GroupBox3: TGroupBox;
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    Edit13: TEdit;
    Edit14: TEdit;
    MonthCalendar1: TMonthCalendar;
    Button1: TButton;
    DateTimePicker1: TDateTimePicker;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
          private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form4: TForm4;
    t:boolean;
    d:TDateTime;
    j:Byte;
    i:Byte;
    f:TextFile;
    H:string;
    Key: Char;
    implementation

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);
 begin
  AssignFile(f, '2A.txt');
  Rewrite(f);
  for j := 0 to ComponentCount - 1 do
    if Components[j] is TEdit then
        WriteLn(f, (Components[j] as TEdit).Text);
  CloseFile(f);
  Form4.FormCreate(Sender);
end;

procedure TForm4.FormCreate(Sender: TObject);
begin
t:=false;
  AssignFile(f, '2A.txt');
  ReSet(f);
  for j := 0 to ComponentCount -1  do
    if Components[j] is TEdit then
    begin
           ReadLn(f, H);
          (Components[j] as TEdit).Text:=H;
          (Components[j] as TEdit).MaxLength:=10;

           if (TryStrToDate((Components[j] as TEdit).Text,d)
           and (d - date <= 14)) or ((Components[j] as TEdit).Text='') then
		   begin
		       (Components[j] as TEdit).color:=clred;
			      t:=true;
            end
            else
           (Components[j] as TEdit).color:=clwindow;
	      end;
	         if t then
         TPanel(Application.MainForm.FindComponent('Panel13')).Color:=clred else
         TPanel(Application.MainForm.FindComponent('Panel13')).Color:=clwindow;
         CloseFile(f);
end;


procedure TForm4.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
     if not (Key in [#8, '0'..'9', '.']) then
     begin
     ShowMessage('Íåäîïóñòèìûé ñèìâîë: '+ Key +#13#10+'Ââåäèòå äàòó â ôîðìàòå: 01.01.2012');
     Key := #0;
     end;
end;
end.
Единственное,что осталось сделать это добавить контроль ввода даты в некоторые Edit. Чтобы не было вот такого вот:

Последний раз редактировалось tarasov_88; 13.09.2012 в 15:25.
tarasov_88 вне форума Ответить с цитированием
Старый 13.09.2012, 15:24   #6
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

ну тогда не edit, а maskedit, документацию почитайте про него, там можно маску задать. Хотя не поняла почему нельзя использовать DateTimePicker
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 13.09.2012, 15:31   #7
tarasov_88
Пользователь
 
Регистрация: 07.09.2012
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Sparky Посмотреть сообщение
ну тогда не edit, а maskedit, документацию почитайте про него, там можно маску задать. Хотя не поняла почему нельзя использовать DateTimePicker
Ну вот уже почти все сделано,посмотрите пост выше. Неужели переделывать..
tarasov_88 вне форума Ответить с цитированием
Старый 13.09.2012, 15:33   #8
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

ну а что собствено переделывать, заменяете эдиты на маскэдиты, задаете маску.
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 13.09.2012, 15:39   #9
tarasov_88
Пользователь
 
Регистрация: 07.09.2012
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Sparky Посмотреть сообщение
ну а что собствено переделывать, заменяете эдиты на маскэдиты, задаете маску.
Проблема в том,что я не программист, а инженер-электрик. Захотел сам программу для себя сделать, и чтоб что-то переделать, для меня опять неделя понадобится,как для этого кода ))

Если переделывать,то как? не могли бы вы в моем показать это,хоть немного.

в частности где и как задается маска?

Последний раз редактировалось tarasov_88; 13.09.2012 в 15:49.
tarasov_88 вне форума Ответить с цитированием
Старый 13.09.2012, 15:53   #10
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

почитайте про MaskEdit, там все довольно прозрачно... например вот http://www.beluch.ru/progr/100comp/3_3_3.htm
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет ввода в Edit Matrix6993 Мультимедиа в Delphi 17 12.10.2013 12:04
Запрет на редактирование ячеек от даты valerij Microsoft Office Excel 6 12.12.2010 21:46
Ввод даты в DBE Delphi 7 Ramirag Помощь студентам 4 02.12.2009 16:02
Ввод символов в Edit в Delphi TaYgA Помощь студентам 3 21.11.2009 17:15
Запрет изменения даты Viteef Общие вопросы Delphi 0 20.02.2008 05:09