kullanıcı yetkisine göre form bileşeni gösterme ?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- sarp_halit
- Üye
- Mesajlar: 241
- Kayıt: 17 Ara 2003 04:30
- Konum: Cennet Fethiye
- İletişim:
kullanıcı yetkisine göre form bileşeni gösterme ?
Merhaba arkadaşlar.
Kullanıcı bazlı bir proje geliştirmek istiyorum. projemde formlar ve üzerindeki bileşenler kullanıcının yetkisine göre gösterilecek. kullanıcı yetkilerini veritabanından seçecek.
yetkilendirmeyi de şu şekilde düşünüyorum:
veritabanında modul bilgilerini tutan bir tablo olacak. modülid, modül açıklama ve bileşen ismi.
bir de kullanıcı yetki tablosu olacak tabi. onda da kullanıcı id modulid alanları mevcut.
kullanıcnın yetkisi dahilinde modüller tablosunda adı geçen bileşeni göstermek ya da saklamak için ne yapabilirim. bileşen handle diye bir şey ama nasıl yapılacağını bilmiyorum.
bu konu ile ilgili olarak önerebileceğiniz başka bir yöntem var mı ya da bu bahsettiğim şeyi nasıl yapabilirim?
teşekkür ederim.
Kullanıcı bazlı bir proje geliştirmek istiyorum. projemde formlar ve üzerindeki bileşenler kullanıcının yetkisine göre gösterilecek. kullanıcı yetkilerini veritabanından seçecek.
yetkilendirmeyi de şu şekilde düşünüyorum:
veritabanında modul bilgilerini tutan bir tablo olacak. modülid, modül açıklama ve bileşen ismi.
bir de kullanıcı yetki tablosu olacak tabi. onda da kullanıcı id modulid alanları mevcut.
kullanıcnın yetkisi dahilinde modüller tablosunda adı geçen bileşeni göstermek ya da saklamak için ne yapabilirim. bileşen handle diye bir şey ama nasıl yapılacağını bilmiyorum.
bu konu ile ilgili olarak önerebileceğiniz başka bir yöntem var mı ya da bu bahsettiğim şeyi nasıl yapabilirim?
teşekkür ederim.
Fethiye den herkese sevgiler ...
X))@:>
X))@:>
Re: kullanıcı yetkisine göre form bileşeni gösterme ?
Kod: Tümünü seç
edit1.visible := query_yetki.asinteger = 1;
kıdemsiz üye
Re: kullanıcı yetkisine göre form bileşeni gösterme ?
geliştirdiğim bir programda zaman kısıtlı olduğu için şu şekilde birşey yapmıştım, kullanıcı adı, bir ayraç, şifresi ve yetkisi: kullanıcı adı $ şifresi @ yetkisi 18 li bir yetki sistemi olması gerekiyordu olasılıkları hesaplayacak vaktim olmadığı için 18 adet 1 ve 0 ı string bir array a yüklüyordum.Sonra atıyorum 1. formu açmak için s[1]=1 koşulu, 2. formu açmak için s[2]=1 koşulu vs. gibi kontrol ediyordum
Kolay Gelsin.
Kolay Gelsin.
UWESIS CORPORATION
- sarp_halit
- Üye
- Mesajlar: 241
- Kayıt: 17 Ara 2003 04:30
- Konum: Cennet Fethiye
- İletişim:
Re: kullanıcı yetkisine göre form bileşeni gösterme ?
Ben daha farklı bir yöntem düşündüm ama nasıl yapacağımı bilemedim. ilk kez deneyeceğim bir şey olduğundan dolayı biraz takıldım.
bir dll üzerinden form bileşenlerini kontrol etmeyi düşünüyorum hoş bunu ayrı bir unit içerisinde fonksiyon olarak da tanımlayabilirdim de ama ne bileyim dll konusunda da bilgi sahibi olmak gerek
Yapmak istediğim şey:
Projede yer alan bütün formlar ve bileşenler veri tabanında kayıtlı. dll içerisinde geçerli form ve kullanıcı isimlerini parametre alan bir prosedür var. bir adet query oluşturup bu parametrelerle geçerli olan form ve kullanıcıya göre bileşenlerin göstereceğim ya da gizleyeceğim.
ancak dllde prosedürü tanımladım ama nasıl kullanacağımı bilemedim.
bu konuda örnek referans alabileceğim ya da bilgi edinebileceğim bir kaynak var mı? ya da başka bir yöntem önerebilir misiniz?
Teşekkür ederim.
Hayırlı akşamlar.
bir dll üzerinden form bileşenlerini kontrol etmeyi düşünüyorum hoş bunu ayrı bir unit içerisinde fonksiyon olarak da tanımlayabilirdim de ama ne bileyim dll konusunda da bilgi sahibi olmak gerek

Yapmak istediğim şey:
Projede yer alan bütün formlar ve bileşenler veri tabanında kayıtlı. dll içerisinde geçerli form ve kullanıcı isimlerini parametre alan bir prosedür var. bir adet query oluşturup bu parametrelerle geçerli olan form ve kullanıcıya göre bileşenlerin göstereceğim ya da gizleyeceğim.
ancak dllde prosedürü tanımladım ama nasıl kullanacağımı bilemedim.
bu konuda örnek referans alabileceğim ya da bilgi edinebileceğim bir kaynak var mı? ya da başka bir yöntem önerebilir misiniz?
Teşekkür ederim.
Hayırlı akşamlar.
Fethiye den herkese sevgiler ...
X))@:>
X))@:>
Re: kullanıcı yetkisine göre form bileşeni gösterme ?
viewtopic.php?t=4692
http://delphi.programcilari.com/?p=82
---DLL-------------
//KULLANIM
http://delphi.programcilari.com/?p=82
---DLL-------------
Kod: Tümünü seç
library DNDLL;
uses
Dialogs,
Windows;
procedure Mesajim;
begin
MessageDlg('DNDLL UYGULAMASI ',mtConfirmation,[mbok],0);
end;
exports
Mesajim;
begin
end.
Kod: Tümünü seç
unit UFormDLL;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
public
end;
procedure Mesajim; external 'DNDLL.dll';
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Mesajim;
end;
Bir kelimenin anlamını öğretsen bile yeter..



- sarp_halit
- Üye
- Mesajlar: 241
- Kayıt: 17 Ara 2003 04:30
- Konum: Cennet Fethiye
- İletişim:
Re: kullanıcı yetkisine göre form bileşeni gösterme ?
dll olayını çözdük. şimdi benim asıl yapmak istediğim şey:
FORMNAME------BILESEN-----USER_ID-----YETKI
frmMainform frmMainform Halit 1
frmMainform btnYeni Halit 1
frmMainform btnGuncelle Halit 1
Yetki tablosu bu şekilde. Projede yer alan bütün formlar ve formlarda yer alan bütün bileşenler ( isimleri) tabloda tutuluyor. dll dosyasından da aşağıdaki gibi bir prosedür var.
amacım her bileşen için tek tek kontrol sağlamak yerine bir döngü kurup form üzerinde yetkisi 1 olan bileşenlerin visible özelliklerini true yapmak.
Böyle bir şeyi yapmak mümkün mü acaba?
şimdi for döngüsünün içerisine şu kodu yazarsam isim string türünde bir değişken olacağından doğal olarak hata verecek.
tablodan gelen ismi bileşen adına göre bileşeni nasıl visible yapabilirim?
Teşekkür ederim.
FORMNAME------BILESEN-----USER_ID-----YETKI
frmMainform frmMainform Halit 1
frmMainform btnYeni Halit 1
frmMainform btnGuncelle Halit 1
Yetki tablosu bu şekilde. Projede yer alan bütün formlar ve formlarda yer alan bütün bileşenler ( isimleri) tabloda tutuluyor. dll dosyasından da aşağıdaki gibi bir prosedür var.
Kod: Tümünü seç
procedure FormBileseniYukle(form, Kullanici:String); export;
var sorgu:TAdoQuery;
gecerliBaglanti:String;
vtbaglantisi:TIniFile;
kayitsayisi:integer;
begin
sorgu:=TAdoQuery.Create(nil);
vtbaglantisi:=TIniFile.Create(ExtractFilePath( Application.ExeName )+'veritabanlari.ini');
with sorgu do
begin
ConnectionString:=frmMainform.gecerlibaglantiver;
Close;
SQL.Clear;
SQL.Add('Select * FROM webKULLANICIYETKILER WHERE (FORMNAME=:form) AND (Kullanici=:KUL)');
Parameters.ParamByName('form').Value:=form;
Parameters.ParamByName('KUL').Value:=Kullanici;
if not Active Then Active:=True;
Open;
while not eof do
begin
for kayitsayisi:=0 to recordcount do
begin
?????????????????????????????????????????????
end;
end;
end;
end;
Böyle bir şeyi yapmak mümkün mü acaba?
şimdi for döngüsünün içerisine şu kodu yazarsam isim string türünde bir değişken olacağından doğal olarak hata verecek.
Kod: Tümünü seç
if fieldbyname('YETKI').AsInteger = 1 Then fieldbyname('BILESEN').AsString:=True Else fieldbyname('BILESEN').AsString:= False;
Teşekkür ederim.
Fethiye den herkese sevgiler ...
X))@:>
X))@:>
Re: kullanıcı yetkisine göre form bileşeni gösterme ?
while not eof do
içerisinde
form1.+querybilesenALAN.value+.visible:=true;
next
end;
gibi bir şey denenebilir belki.
içerisinde
form1.+querybilesenALAN.value+.visible:=true;
next
end;
gibi bir şey denenebilir belki.
Bir kelimenin anlamını öğretsen bile yeter..



- sarp_halit
- Üye
- Mesajlar: 241
- Kayıt: 17 Ara 2003 04:30
- Konum: Cennet Fethiye
- İletişim:
Re: kullanıcı yetkisine göre form bileşeni gösterme ?
merhaba arkadaşlar.
iş yoğunluğundan dolayı anca yanıt verebildim. kusura bakmayın.
elimde iki adet tablo var. birinci tabloda form üzerinde bulunan bütün bileşen isimlerinin bulunduğu bir tablo.
Bir de kullanıcı yetkilerinin olduğu bir tablo. kullanıcı yetkilerinin olduğu tabloda bu bilgilerin aynısı var ( kullanıcı eklendiğinde bileşenleri görüp görememesine ilişkin bileşen bilgilerini almak için böyle bir yöntem yaptım.)
onun yapısı da şu şekilde:
dll dosyasında kullandığım prosedür ise şu şekilde. bunu dll yapmak istememdeki amaç sadece dll dosyaları ile çalışmak ve nasıl işlediğini öğrenmek.
bu arada dll dosyasının projeye eklenemesinde ve çalıştırılmasında herhangi bir problem yok.
emeği geçen bütün arkadaşlara çok teşekkür ederim.
iyi çalışmalar.
iş yoğunluğundan dolayı anca yanıt verebildim. kusura bakmayın.
elimde iki adet tablo var. birinci tabloda form üzerinde bulunan bütün bileşen isimlerinin bulunduğu bir tablo.
Kod: Tümünü seç
/****** Object: Table [dbo].[webRFORMLARI] Script Date: 02/04/2011 16:18:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[webRFORMLARI](
[FORMADI] [varchar](50) COLLATE Turkish_CI_AS NOT NULL,
[FORMACIKLAMA] [varchar](50) COLLATE Turkish_CI_AS NOT NULL,
[BILESENADI] [varchar](50) COLLATE Turkish_CI_AS NOT NULL,
[BILESENTIPI] [varchar](20) COLLATE Turkish_CI_AS NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
onun yapısı da şu şekilde:
Kod: Tümünü seç
/****** Object: Table [dbo].[webKULLANICIYETKILERI] Script Date: 02/04/2011 16:21:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[webKULLANICIYETKILERI](
[FORMADI] [varchar](50) COLLATE Turkish_CI_AS NOT NULL,
[BILESENADI] [varchar](50) COLLATE Turkish_CI_AS NOT NULL,
[BILESENTIPI] [varchar](20) COLLATE Turkish_CI_AS NOT NULL,
[KULLANICI] [nvarchar](100) COLLATE Turkish_CI_AS NOT NULL,
[YETKI] [smallint] NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
Kod: Tümünü seç
library kullaniciYetkileri;
{ Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }
uses
SysUtils,
inifiles,
db,
adodb,
forms,
Variants,
ComCtrls,
Controls,
StdCtrls,
Classes;
{$R *.res}
procedure formbileseniyukle(formadi, kullanici:String; sorgu:TADOQuery); export;
var kullanicivar, bilesenvar:boolean;
i:integer;
bilesen:TComponent;
begin
try
//ilk olarak kullanıcı yetki tablosunda var mı kontrol et?
with sorgu do
begin
Close;
SQL.Clear;
SQL.Add('SELECT KULLANICI FROM webKULLANICIYETKILERI WHERE (KULLANICI=:KULLANICI)');
Parameters.ParamByName('KULLANICI').Value:=kullanici;
if not Active then active:=True;
Open;
if Eof Then kullanicivar:=False else kullanicivar:=True;
if kullanicivar Then
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM webKULLANICIYETKILERI WHERE (KULLANICI=:KULLANICI) AND (FORMADI=:AKTIFFORM)');
Parameters.ParamByName('KULLANICI').Value:=kullanici;
Parameters.ParamByName('AKTIFFORM').Value:=formadi;
if not Active Then Active:=True;
Open;
While not eof do
begin
for i:=0 to ComponentCount-1 do
begin
if Components[i].Name=VarToStr(FieldValues['BILESENADI']) Then
begin
//??? burada ne yapacağımı bilmiyorum ????
end;
end;
next;
end;
end else
begin
Application.MessageBox(Pchar(kullanici+' kullanıcısı için yetkilendirme yapılmadığından dolayı sisteme giriş yapamazınız.'+#13+'Lütfen bilgi işlemden yetki alınız.'),'Randevu');
Halt;
end;
end;
finally
end;
end;
exports formbileseniyukle;
begin
end.
emeği geçen bütün arkadaşlara çok teşekkür ederim.
iyi çalışmalar.
Fethiye den herkese sevgiler ...
X))@:>
X))@:>