Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

DBEDIT   Найти похожие ветки 

 
Начинающий41   (2012-06-30 16:24) [0]

подскажите возможно ли сделать так чтобы в dbedit вводислись только опреденные буквы.


 
Плохиш ©   (2012-06-30 17:30) [1]

Это вопрос или констатация факта?


 
Anatoly Podgoretsky ©   (2012-06-30 17:32) [2]

> Начинающий41  (30.06.2012 16:24:00)  [0]

Возможно


 
AV ©   (2012-06-30 17:45) [3]


> Плохиш ©   (30.06.12 17:30) [1]
>
> Это вопрос или констатация факта?

:)

Однажды английский физик-теоретик Поль Дирак читал лекцию по квантовой механике, исписал мелом всю доску и под конец спросил:
- Вопросы есть?
- Я не понял, как вы вывели последнюю формулу, - сказал один студент.
- Это утверждение, а я спросил: "Вопросы есть?"


> dbedit вводислись только опреденные буквы.

не правильная идеология

надо или после всего ввода проверять на несоответствие
или на уровне БД запретить запись в поле неправильных значений


 
Studentik9   (2012-06-30 20:49) [4]

Фильтруй на onkеyрrеss: if kеy="неточтонадо" thеn kеy:=#0


 
oldman ©   (2012-07-01 01:29) [5]


> Studentik9   (30.06.12 20:49) [4]


не работает при копи-пасте


 
Studentik9   (2012-07-01 10:09) [6]

Тогда на оnchаngе навесить проверку вводимых символов или отключить контекстное меню(прикрутить свое пустое) и быстрые клавиши(фильтрацией)


 
Давайте будем жрать!   (2012-07-01 10:15) [7]


> отключить контекстное меню(прикрутить свое пустое)
Лучше при установке предупреждать, чтоб выдернули из клавиатуры кнопку V, так как она несовместима с данным программным обеспечением.


 
Studentik9   (2012-07-01 10:16) [8]

Можно также перед записью в Бд перебрать посимвольно и лишние удалить(использовать Lеngth,Сорy,Dеlеtе) Подробное описание функций в помощи Дельфи


 
Studentik9   (2012-07-01 10:22) [9]

Лучше Вечноголодному отвечать на вопрос топикстартера,если знаешь,а не блистать своим чувством юмора ;-)


 
Давайте будем жрать!   (2012-07-01 11:22) [10]

В [4] уже был приемлемый ответ, нефиг изобретать велосипеды с квадратными колёсами.


 
Inovet ©   (2012-07-01 11:24) [11]

Правильный ответ в
>[3] AV ©   (30.06.12 17:45)


 
Studentik9   (2012-07-01 11:37) [12]

Почти любую задачу можно решить более чем одним способом,вот пусть автор темы и выбирает себе более подходящий(доступный по реализации) Фильтрация символов в поле ввода,задача нетривиальная,попадать туда они могут 1000 и 1 способом и оградить нерадивого юзера от неправильного ввода надо очень постараться :) чтобы потом крякозябры в базу не попали ;)


 
Юрий Зотов ©   (2012-07-01 11:46) [13]


> Studentik9   (01.07.12 11:37) [12]
> попадать туда они могут 1000 и 1 способом

Совершенно верно. Например, с помощью другой программы. Поэтому, чтобы в базу не попадали крякозябры, проверку надо делать на уровне самой БД, а не на уровне клиентскай части.


 
Studentik9   (2012-07-01 11:49) [14]

>Юрий Зотов  Самый лучший способ! Реализация зависит от используемой БД


 
SergeyIT ©   (2012-07-03 14:48) [15]

Пример как можно это сделать (сохранения файла с проверкой разрешенных символов в имени)

unit GlFunc;
interface
uses
  SysUtils;
type
 TLetters = #32..#255;
 TLetSet = set of TLetters;
var
  _FileChars: TLetSet = [ #32..#127] -
      ["!","@","#","$","%","^","&","*","+","`","~","|",
       "\","/","?",">","<",".",",","=",":",";",""",""""];

function CheckString(var str: String; const let: TLetSet): Boolean;

implementation

function CheckString(var str: String; const let: TLetSet): Boolean;
var
  s: String;
  n, i: Integer;
begin
    Result := TRUE;
    s := "";
    n := Length(str);
    if n < 1 then exit;
    Result := FALSE;
    for i := 1 to n do
    begin
      if str[i] in let then s := s + str[i];
    end;
    if Length(s) = n then Result := TRUE else str := s;
end;
end.

Использование в диалоге сохранения файла

unit SaveDlg;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, FileCtrl, Glfunc;

type
 TSaveForm = class(TForm)
   LBFiles: TFileListBox;
   LDir: TLabel;
   EFile: TEdit;
   CBFilter: TFilterComboBox;
   BtnOk: TButton;
   BtnCancel: TButton;
   procedure FormShow(Sender: TObject);
   procedure BtnOkClick(Sender: TObject);
   procedure EFileChange(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
   bCheckName: Boolean;
 public
   { Public declarations }
 end;

var
  _LastFileName: String = "";

//var
//  SaveForm: TSaveForm;

implementation

{$R *.DFM}

procedure TSaveForm.FormCreate(Sender: TObject);
begin
 bCheckName := FALSE;
end;

procedure TSaveForm.FormShow(Sender: TObject);
begin
 EFile.Text := ChangeFileExt(_LastFileName, "");
 ActiveControl := EFile;
 EFile.SetFocus;
 EFile.SelStart := Length(EFile.Text);
 EFile.SelLength := 0;
 bCheckName := TRUE;
 EFileChange(EFile);
end;

procedure TSaveForm.BtnOkClick(Sender: TObject);
var
  i: Integer;
  c: Byte;
  s: String;
begin
 bCheckName := FALSE;
 EFile.Text := Trim(ExtractFileName(EFile.Text));
 s := ExtractFileExt(EFile.Text);
 if (s = ".bmp") OR (s = ".jpg") then
 begin
   s := ChangeFileExt(EFile.Text, "");
   EFile.Text := s;
 end;
 if EFile.Text = "" then
 begin  ModalResult := mrNone; exit; end;
 s := EFile.Text;
 if NOT CheckString(s, _FileChars) then ModalResult := mrNone
 else
   for i := 1 to Length(EFile.Text) do
   begin
     c := Byte(EFile.Text[i]);
     if  c < 128 then continue;
     ModalResult := mrNone;
     break;
   end;
 if ModalResult = mrNone then
 begin
   s := "Не используйте Кирилицу и символы:" + char($D) + char($A) +
        " ! @ # $ % ^ & * + ` ~ | \ / ? > < . , = : ; " """ +
        char($D) + char($A) + "в имени файла!!!";
   Application.MessageBox(PChar(s),"Save dialog", MB_OK);
   bCheckName := TRUE;
 end;
end;

procedure TSaveForm.EFileChange(Sender: TObject);
var
  i, ii, n: Integer;
  s: String;
  em: TEdit;
  bEnd: Boolean;
begin
 if NOT bCheckName then exit;
 if NOT EFile.Focused then
 begin
   EFile.Text := Trim(ExtractFileName(EFile.Text));
   EFile.Text := ChangeFileExt(EFile.Text, "");
 end;
 em := Sender as TEdit;
 i := em.SelStart;
 n := Length(em.Text);
 s := em.Text;
 if NOT CheckString(s, _FileChars) then
 begin
   em.Text := s;
   i := i - (n - Length(s));
   if (i >= 0) AND (i <= Length(s)) then
        em.SelStart := i
   else em.SelStart := 0;
   if EFile.Focused then MessageBeep($FFFFFFFF);
 end;
 if EFile.Focused then
 begin
   n := 0;
   bEnd := FALSE;
   for i := 1 to Length(em.Text) do
   begin
     s := Copy(em.Text, 1, i);
     for ii := n to LBFiles.Items.Count - 1 do
     begin
       if Pos(s, LBFiles.Items[ii]) = 1 then
       begin
         n := ii;
         break;
       end;
       if ii = (LBFiles.Items.Count - 1) then bEnd := TRUE;
     end;
     if bEnd then break;
   end;
   if LBFiles.Items.Count > 0 then
     LBFiles.TopIndex := n;
 end;
end;

end.



 
Studentik9   (2012-07-03 17:14) [16]

Топик стартеру нужно сохранять данные из DBEdit в базу данных, а не в текстовый файл


 
SergeyIT ©   (2012-07-03 17:37) [17]

Studentik9
Так в этом примере данными является имя файла, а не его содержание



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.061 c
15-1328629815
Псарь
2012-02-07 19:50
2013.03.22
Для чего нужен NaN?


2-1329819397
Витя
2012-02-21 14:16
2013.03.22
Поиск совпадений на изображении


15-1346963402
Юрий
2012-09-07 00:30
2013.03.22
С днем рождения ! 7 сентября 2012 пятница


15-1334223202
brother
2012-04-12 13:33
2013.03.22
в win7 теперь это возможно?


15-1312895393
Kerk
2011-08-09 17:09
2013.03.22
Шахматный турнир





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский