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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2009, 17:11   #21
Ti_pain)
Пользователь
 
Регистрация: 04.11.2009
Сообщений: 39
По умолчанию

Хм чет не подумал что все поля относяться к класу(( блин та шо такое........(( а мож сказатьо пор какие исходники говорил?

Труба....
Код:
type 
TOnlyCase=set of (Numbers,Letters);
 TmaskEditEvo = class(TMaskEdit)
 ......................................... 
  published
    property OnlyCase:TOnlyCase read FOnlyCase; write SetOnlyCase;
 ............................................
[Error] maskEditEvo.pas(32): Field definition not allowed after methods or properties
[Error] maskEditEvo.pas(32): ',' or ':' expected but ';' found
............................
??
Даже если у меня шото и получиться с етим как потом узнать перед каким полем галочку поставили?))

Уже и в исходниках стандартных Компонентов смотрел вроди все также(((

Подскажите пожалуйста)) уже незнаю че делать((

Последний раз редактировалось Stilet; 13.11.2009 в 09:44.
Ti_pain) вне форума Ответить с цитированием
Старый 12.11.2009, 20:43   #22
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

первая ошибка в коде не показана у вас.
она состоит в том поля нужно объявлять до методов и св-в.

а 2)
Код:
published
property OnlyCase:TOnlyCase read FOnlyCase write SetOnlyCase;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 12.11.2009 в 20:48.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.11.2009, 21:02   #23
Ti_pain)
Пользователь
 
Регистрация: 04.11.2009
Сообщений: 39
По умолчанию

Шото я так и не понял что надо сделать(((

Код:
type
  TOnlyCase=set of (Numbers,Letters);
  TmaskEditEvo = class(TMaskEdit)
  private
 { Private declarations }
      FOnlyCase:TOnlyCase;
    protected
 { Protected declarations }
 
    procedure SetOnlyCase(Value : boolean);
    procedure KeyPress (var Key : char);  override;
  public
    { Public declarations }

  published
    { Published declarations }
    property OnlyCase:TOnlyCase read FOnlyCase; write SetOnlyCase;
.............

Вроди поле обявлено(

Последний раз редактировалось Stilet; 13.11.2009 в 09:44.
Ti_pain) вне форума Ответить с цитированием
Старый 12.11.2009, 21:45   #24
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
property OnlyCase:TOnlyCase read FOnlyCase; write SetOnlyCase;
вы опять повторяете ту же ошибку... поясню: внешнее свойство компонента OnlyCase имеет тип TOnlyCase и заносится из FOnlyCase, в тоже время оно двунаправленное и может устанавливаться пользователем, при этом оно записывается в SetOnlyCase, поэтому ; лишняя (если же вы хотите чтоб оно было только на чтение, тогда пишем просто - property OnlyCase:TOnlyCase read FOnlyCase... что в принципе имеет смысл только для свойств типа- "о программе")

...кроме того вы можете регулировать положение переключателя, например так:
Код:
property OnlyCase:TOnlyCase read FOnlyCase write SetOnlyCase default Letters;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 12.11.2009, 22:04   #25
Ti_pain)
Пользователь
 
Регистрация: 04.11.2009
Сообщений: 39
По умолчанию

Тепер выдает((
Я так и не понял как потом узнать над каким полем пользоваел поставил галочку??

[Error] maskEditEvo.pas(28): Incompatible types
[Error] maskEditEvo.pas(19): Unsatisfied forward or external declaration: 'TmaskEditEvo.SetOnlyCase'
Ti_pain) вне форума Ответить с цитированием
Старый 12.11.2009, 22:24   #26
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Я так и не понял как потом узнать над каким полем пользоваел поставил галочку
Цитата:
при этом оно записывается в SetOnlyCase
исправьте...
Код:
procedure SetOnlyCase(const Value : TOnlyCase);
потом в теле компонента после implementation
Код:
procedure TmaskEditEvo.SetOnlyCase(const Value: TOnlyCase);
begin
 FOnlyCase:= value;

 if FOnlyCase= Numbers then  // ваше действие
  else // ваши действия 
end;
...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 12.11.2009, 22:49   #27
Ti_pain)
Пользователь
 
Регистрация: 04.11.2009
Сообщений: 39
По умолчанию

Блин я дико извеняюсь) спасибо большое всем кто помагает мне))
........................
Код:
unit maskEditEvo;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, Mask, Dialogs;

type
  TOnlyCase=set of (Numbers,Letters);
  TmaskEditEvo = class(TMaskEdit)
  private
 { Private declarations }
    FOnlyCase:TOnlyCase;
    protected
 { Protected declarations }
    procedure SetOnlyCase(Value : TOnlyCase);
    public
    { Public declarations }
    published
    { Published declarations }
    property OnlyCase:TOnlyCase read FOnlyCase write SetOnlyCase;
  end;

procedure Register;
implementation
procedure SetonlyCase(Value : TOnlyCase);
begin
  FOnlyCase:=Value;
 if  FOnlyCase= Numbers then Self.Text:='Вышло';
end;
procedure Register;
begin
  RegisterComponents('Standard', [TmaskEditEvo]);
end;
end.
Вроди уже сдела правельно а оно мне
........................
[Error] maskEditEvo.pas(30): Undeclared identifier: 'FOnlyCase'
[Error] maskEditEvo.pas(31): Undeclared identifier: 'Self'
[Error] maskEditEvo.pas(31): Missing operator or semicolon
[Error] maskEditEvo.pas(16): Unsatisfied forward or external declaration: 'TmaskEditEvo.SetOnlyCase'
[Fatal Error] dclusr.dpk(35): Could not compile used unit 'My\maskEditEvo.pas'

Пожалуйста помогите))

Последний раз редактировалось Stilet; 13.11.2009 в 09:43.
Ti_pain) вне форума Ответить с цитированием
Старый 13.11.2009, 09:54   #28
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ti_pain)
Хитрость создания компонента заключается не только в том что ты его описал, а еще и в том что нужно определить методы.
Это тто что ты набрал - описание мотодов, но не их реализация, а она нужна, даже есди она пустая будет все равно: Описал метод, свойство - реализуй
Вот смотри:
Код:
unit MaskEdit1;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, Mask;

type         TOnlyCase=set of (Numbers,Letters);

  TOptions=set of (First,Second);
  TMaskEdit1 = class(TMaskEdit)
  private
    FOptions: TOptions;    FOnlyCase:TOnlyCase;

    { Private declarations }
  protected
    procedure SetOptions(const Value: TOptions);
     procedure SetOnlyCase(Value : TOnlyCase);
 // Ты же его описал!
    { Protected declarations }
  public
    { Public declarations }
  published
   Property Options:TOptions read FOptions write SetOptions;
      property OnlyCase:TOnlyCase read FOnlyCase write SetOnlyCase;
 // Терь реализуй (см. ниже)
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TMaskEdit1]);
end;

{ TMaskEdit1 }

procedure TMaskEdit1.SetOnlyCase(Value: TOnlyCase);
begin
 // Вот это обязано быть если ты в классе его описал
end;

procedure TMaskEdit1.SetOptions(const Value: TOptions);
begin
  FOptions := Value;
end;

end.
Поставь курсор на какой нить метод в классе и нажми CTRL+SHIFT+C -
Делфи услужливо тебе создаст обработчики.

Ферштеен?

А кстаа поясню где ты провтыкал у меня методы привязаны к классу:
Код:
procedure TMaskEdit1.SetOptions(const Value: TOptions);
А у тебя нет:
Код:
procedure SetonlyCase(Value : TOnlyCase);
А нужно указыватьим к какому класу они пренадлежат.
I'm learning to live...

Последний раз редактировалось Stilet; 13.11.2009 в 09:58.
Stilet вне форума Ответить с цитированием
Старый 13.11.2009, 10:26   #29
Ti_pain)
Пользователь
 
Регистрация: 04.11.2009
Сообщений: 39
По умолчанию

Спасибо вам большое)) извенити сам понемаю что уже надоел.....))
Ti_pain) вне форума Ответить с цитированием
Старый 14.11.2009, 12:05   #30
Ti_pain)
Пользователь
 
Регистрация: 04.11.2009
Сообщений: 39
По умолчанию

Можна нескромненький вопросик?) могу я переназначит свойство:
property IsMasked: Boolean;??
ну как KeyPress?? или такого делать нельзя?
Ti_pain) вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите в создании своего компонента hunter03 Компоненты Delphi 1 06.11.2009 09:36
Заменить стандартное событие компонента при создании своего. postal2 Компоненты Delphi 6 28.08.2009 11:01
Проблема при создании компонента Levsha100 Компоненты Delphi 3 02.05.2009 12:05
Проблема перехвата сообщений при создании невизуального компонента volod3000 Компоненты Delphi 7 08.03.2009 14:13