Files
kompas3d-mcp/docs/Kompas3D_SDK/guides/getvalidator.md
T
mikhail e1337e4016 feat(sdk-docs): MD-база знаний SDK — в репозиторий; генератор и зеркало убраны
docs/Kompas3D_SDK/ становится каноническим источником справки КОМПАС SDK
и включается в репозиторий (2491 файл, ~14 МБ). HTML-зеркало
docs/KOMPAS_SDK_ru-RU/ (~1.4 ГБ, © АСКОН) и генератор
tools/build_kompas3d_sdk.py больше не нужны — регенерация не предполагается.

- .gitignore: MD-база разблокирована; зеркало остаётся проигнорированным
  (safety-net на случай повторной локальной выгрузки).
- CLAUDE.md / SKILL.md: убраны упоминания регенерации и зеркала.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 20:00:05 +03:00

4.3 KiB

title, type, api, tags, sources
title type api tags sources
GetValidator - Получить валидатор guide
api7
guide
api7
getvalidator
getvalidator.html

*API экспортных функций > Функции работы с прикладной библиотекой  > Функции ввода параметров *

GetValidator - Получить валидатор

Пример... Синтаксис:

void* GetValidator( void *min, void *max, unsigned char type);
Входные параметры:
min, max    - границы интервала,
type    - тип данных.
Возвращаемое значение:
указатель на Tvalidator    - в случае удачного завершения,
0    - в случае неудачи или если курсор находится не на поле чертежа.

Примечание: Функция работает только в OWL.

GetValidator - Пример использования

// Описание класса обработки диалога, в котором использованы два TEdit, // чтобы ввести проверку интервала вводимых значений. // К TEdit подключается валидатор #define DIALOG_1 101 #define IDC_EDIT1 1001 #define IDC_EDIT2 1002 //----------------------------------- // ресурс диалога DIALOG_1 DIALOG 114, 71, 103, 107 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Диалог" FONT 8, "MS Sans Serif" { DEFPUSHBUTTON "OK", IDOK, 27, 80, 50, 14 EDITTEXT IDC_EDIT1, 63, 24, 21, 12 LTEXT "Исполнение", -1, 15, 27, 43, 8 EDITTEXT IDC_EDIT2, 63, 48, 32, 12 LTEXT "Длина", -1, 17, 50, 29, 8 } //----------------------------------- class TestDialog : public TDialog { float len; int ispoln; TEdit *hLen; //ввод длины: значение кладется в len TEdit *hIspoln; //ввод исполнения: значение кладется в ispoln public: TestDialog (TWindow *ptParent); void SetupWindow(); protected : void EvLen(); void EvIspoln(); void CmOk(); // IDOK DECLARE_RESPONSE_TABLE(TestDialog); }; DEFINE_RESPONSE_TABLE1(TestDialog, TDialog) EV_EN_KILLFOCUS (IDC_EDIT2, EvLen), EV_EN_KILLFOCUS (IDC_EDIT1, EvIspoln), EV_COMMAND(IDOK, CmOk), END_RESPONSE_TABLE; //конструктор диалога //----------------------------------- TestDialog::TestDialog(TWindow *ptParent): TDialog(ptParent , DIALOG_1, module), len(20), ispoln (1) { hLen = new TEdit(this, IDC_EDIT2, 10); //интервал для float: тип 4; min=0 max=100 float minF=0, maxF=100; //валидатор контролирует значения типа float hLen->SetValidator ((TValidator *) GetValidator(&minF, &maxF, 4)); hIspoln = new TEdit (this, IDC_EDIT1, 10); //интервал для int: тип 2; min=1 max=5 //валидатор контролирует значения типа int int minI =1, maxI=5; hIspoln->SetValidator ((TValidator *) GetValidator (&minI, &maxI, 2)); }; //----------------------------------- void TestDialog::SetupWindow() { char s[128]; TDialog::SetupWindow(); sprintf (s, "%.1f", len); hLen->SetText(s); sprintf (s, "%d", ispoln); hIspoln->SetText(s); } //----------------------------------- void TestDialog::EvLen() { if (hLen->IsValid(FALSE)) //мы в интервале { char buf[20]; char *c; GetDlgItemText (IDC_EDIT2, buf, 10); len = strtod (buf, &c); } } //----------------------------------- void TestDialog::EvIspoln() { if (hIspoln->IsValid(FALSE)) //мы в интервале { char buf[20]; char *c; GetDlgItemText (IDC_EDIT1, buf, 10); ispoln = (int) strtol (buf, &c, 10); } } //----------------------------------- void TestDialog::CmOk() { if (!hLen->IsValid(TRUE)) { hLen->SetFocus(); return; } if (!hIspoln->IsValid(TRUE)) { hIspoln->SetFocus(); return; } TDialog::CmOk(); char buf[128]; sprintf (buf, "len=%.3f ispoln=%d",len,ispoln); Message (buf); } //-------------------------------------------------------------------------------- // Функция вызова диалога с использованием валидаторов //-------------------------------------------------------------------------------- void TestValidator() { TestDialog *pDialog; pDialog = new TestDialog (GetWindowPtr((HWND)GetHWindow())); pDialog->Execute(); delete pDialog; }