Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
5 / 5 / 1
Регистрация: 18.03.2014
Сообщений: 106
1

Унаследовать класс MaskEdit и переопределить его процедуру

28.10.2016, 18:24. Показов 1365. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я пытаюсь переопределить процедуру ValidateError в классе MaskEdit чтобы избежать показа ошибки маски. Вот что советуют сделать в этой теме:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask;
 
type
  TMaskEdit = class(Vcl.Mask.TMaskEdit)
  protected
    procedure ValidateError; override;
  end;
....
procedure TMaskEdit.ValidateError;
begin
  try
    inherited; // если строку убрать то ошибка не покажется
  except
    ShowMessage('Неправильный ввод');
  end;
end;
Но Lazarus не распознает в uses Vcl. Я слышал что там используется LCL. Как мне импортнуть Vcl.Mask?
Спасибо заранее
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.10.2016, 18:24
Ответы с готовыми решениями:

Унаследовать класс, но так, чтобы не знать его типы
Здравствуйте! Можно ли как-нибудь унаследовать класс так, чтобы те типы, которые он использует,...

Как создать правильно новый класс и переопределить его метод
Необходимо создать новый класс родителем которого будет textBox в котором будет прикручено: ...

Унаследовать класс от Canvas
Возможно ли создать свой класс, наследующий HTMLCanvasElement? Чтобы с объектом этого класса можно...

Как правильно унаследовать класс?
Есть класс для работы с большими целыми знаковыми числами. public class BigNum { static...

3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33048 / 21348 / 8205
Регистрация: 22.10.2011
Сообщений: 36,658
Записей в блоге: 9
29.10.2016, 02:50 2
kefh,
Pascal
1
  TMaskEdit = class(MaskEdit.TMaskEdit)
, только вот в чем проблема: в Лазарусе у MaskEdit-а нет метода ValidateError, который бы вызывался из ValidateEdit при ошибке валидации. Тут ValidateEdit напрямую бросает исключение:

Pascal
1
2
3
4
5
6
7
8
9
10
11
procedure TCustomMaskEdit.ValidateEdit;
// ...
begin
    // ...
    if not TextIsValid(S) then
    begin
      // ...
      Raise EDBEditError.Create(SMaskEditNoMatch); // <-- Вместо ValidateError
    end;
    // ...
end;
1
5 / 5 / 1
Регистрация: 18.03.2014
Сообщений: 106
29.10.2016, 09:48  [ТС] 3
volvo, Я сделал как вы сказали:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
type
  TMaskEdit = class(MaskEdit.TMaskEdit)
  public
    procedure ValidateEdit; override;
  end;
---
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TCustomMaskEdit.ValidateEdit;
// ...
begin
    //// ...
    if not TextIsValid(S) then
    begin
    //  // ...
      Raise EDBEditError.Create(SMaskEditNoMatch); // <-- Вместо ValidateError
    end;
    //// ...
end;
Но при компиляции выдается ошибка
unit1.pas(108,1) Error: Internal error 2014010312
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33048 / 21348 / 8205
Регистрация: 22.10.2011
Сообщений: 36,658
Записей в блоге: 9
29.10.2016, 11:00 4
Я не говорил этого делать, а просто показал, что происходит в Лазарусе. Это же цитата, а не приведенный мной код для решения проблемы.

Да, можно переопределить ValidateEdit, но это ничего не даст, в Лазарусе этот метод не сработает, доступа к тем свойствам и методам, которые использует TCustomMaskEdit.ValidateEdit это все равно не даст, и отменить выбрасывание исключения не удастся.
1
29.10.2016, 11:00
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.10.2016, 11:00
Помогаю со студенческими работами здесь

Как переопределить класс integer в свой класс ('целочисленный')?
как переопредельть класс Int32 в свой класс ('целочисленный') я писал: class целочисленный :...

Создать класс машина и унаследовать автобус
Добрый день. Две лабы надо сделать. Одну сделал она легкая - создать класс машина и унаследовать...

От класса Таблица унаследовать класс Ячейка
Для начала задание: есть классы строка и таблица, обработчик. Класс обработчик позволяет выводить...

Можно ли унаследовать заранее неизвестный класс?
Всем привет! Помогите, пожалуйста разобраться с наследованием в C++. Я пока новичок, хочу написать...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Rust или Go? А может C++?
hw_wired 28.01.2025
С каждой новой технологией или методологией появляются новые языки программирования, призванные решать конкретные задачи либо улучшать аспекты производительности и безопасности. Среди множества. . .
Fortran и WinAPI: как создать приложение с графическим интерфейсом
hw_wired 28.01.2025
Fortran — это один из старейших высокоуровневых языков программирования, широко используемый в науке и инженерии уже несколько десятилетий. Его название происходит от "Formula Translation" (перевод. . .
Списки в Haskell
hw_wired 28.01.2025
Haskell является функциональным языком программирования, который отличается лаконичностью синтаксиса и мощными абстракциями. Важным концептом в Haskell являются списки — упорядоченные коллекции. . .
Функции высшего порядка в Haskell
hw_wired 28.01.2025
Haskell – это современный функциональный язык программирования, который получил широкое распространение благодаря своей выразительности и мощным абстракциям. Одной из ключевых особенностей Haskell. . .
Как в цикле обойти все поля объекта в JavaScript
bytestream 28.01.2025
Объекты в JavaScript представляют собой фундаментальные структуры данных, которые позволяют хранить и организовывать связанную информацию в виде пар ключ-значение. Каждый объект можно представить как. . .
Как выбрать строки в DataFrame по значению столбца в Pandas
bytestream 28.01.2025
В области анализа данных библиотека Pandas стала незаменимым инструментом для работы с табличными данными в Python. Эта мощная библиотека предоставляет множество функций для эффективной обработки и. . .
Как сделать перенос строки в Bash
bytestream 28.01.2025
При работе с командной оболочкой Bash разработчики часто сталкиваются с необходимостью форматирования текстового вывода, где ключевую роль играет правильное управление переносами строк. Умение. . .
Поиск подстроки в строке с помощью Bash
bytestream 28.01.2025
Поиск подстроки в строке является одной из важных задач в программировании и обработке текстов. Применение такого поиска можно найти в самых разных областях, от анализа данных до разработки. . .
[golang] 169. Majority Element
alhaos 28.01.2025
Тут надо вернуть "мажористый" элемент который встречается в слайсе больше чем в половине случаев. По условиям задачи во входных данных такой элемент обязан присутствовать. / / . . .
Когда лучше использовать LinkedList вместо ArrayList в Java
bytestream 28.01.2025
При разработке Java-приложений выбор правильной структуры данных играет ключевую роль в обеспечении эффективности и производительности программы. ArrayList и LinkedList являются двумя. . .
Какой ответ HTTP лучше использовать: 403 Forbidden или 401 Unauthorized, когда недостаточно прав
bytestream 28.01.2025
В современной веб-разработке правильная обработка ошибок и точное информирование клиентов о статусе их запросов играют критическую роль в создании надежных и безопасных приложений. Особое внимание. . .
Как получить список всех файлов коммита в Git
bytestream 28.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде и других файлах проекта. В основе работы Git лежит концепция коммитов - снимков. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru