Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 18:11 12.07.25 
Компютри и Интернет
   >> Delphi
*Кратък преглед

Тема '*' парола в DBGridнови  
Автор veselinap-126385 ((бойна))
Публикувано07.04.14 15:44



имам грид с поле "парола", където паролата трчбва да се появява във вид на "****'.

Кодът ми е следният:

grdPasswordOnDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);

var s:string;
i : integer;
begin
if Column.FieldName='PASSWORD' then
begin
if not(gdFixed in State) then begin
s:=Column.Field.AsString;
for l:=1 to length(s) do s[l]:='*';
with (Sender as TDBGrid).Canvas do begin
TextOut(Rect.Left, Rect.Top,s);
end;
end;
end;
end;

и нищо....
и това

, пак не ми показва паролата с '***'
та, млко помощ ми е необходима



Тема Re: '*' парола в DBGridнови [re: veselinap-126385]  
Автор andrew_nikoloff (bugbuster)
Публикувано08.04.14 10:05



Не ми допада идеята да правиш custom drawing в грида. Това винаги свършва с грозен и нетипичен изглед. Защо изобщо искаш да го показваш това поле в грида?
Конкретно по твоя проблем (предполагам ползваш делфийския TDBGrid) - провери дали си изключила DefaultDrawing (трябва да е false, за да се викат OnDrawColumnCell събитията).
Ако искаш да избегнеш показването на паролата, но държиш много да имаш копие на звездното небе в грида, можеш още когато селектираш данните от базата да заместиш паролата със звездички, или пък да го направиш по-късно на клиента (например да си добавиш едно calculated поле в data set-а и да показваш него вместо оригинала). Но все пак има ли смисъл от цялата тази галимация? Просто не показвай това поле в грида



Linux isn't free, it's worthless.




Тема Re: '*' парола в DBGridнови [re: andrew_nikoloff]  
Автор veselinap-126385 ((бойна))
Публикувано09.04.14 09:30



да, TDBGrid използвам.
Няма начин, трябва да го покажа полето. Изискване на клиента.
Мдаа, и за calculate поле гледах из нета и честно казано, не го пробвах този вариант.
Ок, мерси, отивам да действам....





Тема onGetTextнови [re: veselinap-126385]  
Автор NikB (спокоен)
Публикувано12.04.14 08:52



tFields имат събитие onGetText.
Значи,
DBGrid.DataSet.FieldByName('име на полето').OnGetText=BlaBla
...
procedure BlaBla(sender .. ще видиш какво трябва да има - в hepl)
begin
Text="****"
end;



Тема Re: onGetTextнови [re: NikB]  
Автор andrew_nikoloff (bugbuster)
Публикувано14.04.14 09:27



Да, но това ще попречи и на редактирането на паролата в някой TDBEdit после. Ще стане точно, като ония виц за блондинката, дето паролата ѝ била 6 звездички



Linux isn't free, it's worthless.




Тема Re: onGetTextнови [re: andrew_nikoloff]  
Автор NikB (спокоен)
Публикувано14.04.14 13:31



Не, че ми се спори (особено с теб :)), но как ще попречи?
Когато (и където) искаш, паролата може да е или реалната или звездичките.
Въпрос на въображение на програмиста.



Тема Re: onGetTextнови [re: NikB]  
Автор andrew_nikoloff (bugbuster)
Публикувано14.04.14 14:37



Не, че се заяждам


Просто едното е презентация на данните (custom drawing-а), а другото е подмяна на данните. Някъде в кода някой ще вземе да прочете Field.Text и ще стане една...
Вече не съм сигурен (отдавна не пиша на Делфи) какво ще стане, ако се закачи такова поле (с OnGetText) към DBEdit и се редактира (дали звездичките няма да се пропагандират към базата). Но дори и само рискът с Field.Text си е достатъчен да ме откаже от идеята

Linux isn't free, it's worthless.




Тема Re: onGetText [re: andrew_nikoloff]  
Автор NikB (спокоен)
Публикувано14.04.14 15:13



Добре, раздвам се, че си в настроение

.
С OnGetText се манипулира едноверемено ИЗГЛЕДЪТ на всички контроли, които са свързани с field на DataSet-а.
Но това не е свързано с обратното манипулиране
т.е., ако се редактира контролата, тя ще си запази редактираната стойност до момента на следващото четене от DataSet.
Поне така си мисля, че работеше, защото обикновено така съм го ползвал. (Ако има някакво недоразумение, ще е, защото обикновено ползвах заявки, а не таблици).

За съжаление вече и аз рядко пиша на Делфи, а и рядко пиша БД (напоследък), щото това сигурно е по същия начин и в C#.
Това C# е много близко, за всички, ползвали Делфи, нали :).




*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2025 Dir.bg Всички права запазени.