Главная страница
    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.5 MB
Время: 0.087 c
6-1258651624
DesWind
2009-11-19 20:27
2013.03.22
Формирование запроса idHTTP


15-1345031945
Рекрут
2012-08-15 15:59
2013.03.22
Как поменять маленькую иконку без VCL?


1-1295433352
noob_one
2011-01-19 13:35
2013.03.22
Массивы и указатели. Что я делаю не так?


15-1333830603
Юрий
2012-04-08 00:30
2013.03.22
С днем рождения ! 8 апреля 2012 воскресенье


15-1347048410
guest
2012-09-08 00:06
2013.03.22
перехват skype..





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский