View Full Version : ساخت treeview و محدود کردن کاربران و ...
davoodmz
سه شنبه 23 اسفند 1384, 08:45 صبح
دوستان بحث امروزی که در اکثر نرم افزارها دیده می شود
ساخت یک treeview و پر کردن چارت مورد نظر و ارتباط تری ویو با بانک اطلاعاتی مخصوص .
((به عنوان مثال یک تری وی میشود ساخت که چارت آن شامل گزینه های مین منو باشد و بعد از ورود هر کاربر و چک کردن رمز مراجعه به تری ویوی ساخته شده شود و دکمه هایی که فقط برای آن کاربر فعال است را نشان دهد) محدودیت کاربران که این تری ویو برای کاربر اصلی قابل نمایش است.(پیوست را ملاحظه فرمائید)
لطفاً کمک کنید با تشکر داود.
m-khorsandi
سه شنبه 23 اسفند 1384, 11:58 صبح
بلاخره نگفتی که شما با کدوم قسمت مشکل داری!؟؟
davoodmz
یک شنبه 28 اسفند 1384, 07:27 صبح
با سلام خدمت شما
من چنین کاری نکردم و می خواهم بدونم که آیا اینها در روی جدول ذخیره می شوند. چطوری این کار را انجام بدهم
باتشکر از شما
یا اینکه کامپونتی برای این کار هست
seiedm
دوشنبه 07 فروردین 1385, 10:39 صبح
من هم با یک چنین مشکلی مواجه شدم لطفا نحوه انجام را برای من هم بفرستید
س.م.ح
davoodmz
سه شنبه 08 فروردین 1385, 11:10 صبح
باسلام
من هنوز جواب نگرفتم .
محمد دادودنیا
چهارشنبه 15 آذر 1385, 03:30 صبح
دوستان بحث امروزی که در اکثر نرم افزارها دیده می شود
ساخت یک treeview و پر کردن چارت مورد نظر و ارتباط تری ویو با بانک اطلاعاتی مخصوص .
((به عنوان مثال یک تری وی میشود ساخت که چارت آن شامل گزینه های مین منو باشد و بعد از ورود هر کاربر و چک کردن رمز مراجعه به تری ویوی ساخته شده شود و دکمه هایی که فقط برای آن کاربر فعال است را نشان دهد) محدودیت کاربران که این تری ویو برای کاربر اصلی قابل نمایش است.(پیوست را ملاحظه فرمائید)
لطفاً کمک کنید با تشکر داود.
با سلام من برای این کار یه چنین روشی به کار بردم
1- MainMenu رو داخل یه TreeViewمی ریزم بعد هر کدوم از منوها رو که می خوام به کاربر دسترسی ندم با انتخاب توسط کاربر و اضافه کردن اسم اون منو به لیستی در یکی از بانکهام در هنگام ساختن صفحه اصلی پروژه ام اونو Free می کنم
حالا چطور Main Menu رو توی درخت می ریزم به این صورت
Procedure SetMainMenuToTreeView(MainMenuA:TMainMenu;TreeView A:TTreeView;Const CanClear:Boolean=True;CN:TNameCaptioMenu=CaptionOn ly);
Var
I:Integer;
tmpTNODE:TTreeNode;
tmpMItem:TMenuItem;
Begin
IF CanClear Then TreeViewA.Items.Clear;
For I:=0 to MainMenuA.Items.Count-1 Do
Begin
IF MainMenuA.Items[i].Visible And MainMenuA.Items[i].Enabled Then
Begin
tmpTNODE:=TreeViewA.Items.Add(nil,GetMenuStr(MainM enuA.Items[i],CN));
tmpTNODE.ImageIndex:=MainMenuA.Items[i].ImageIndex;
GetRecrsivNodeTreeView(MainMenuA.Items[i],TreeViewA,tmpTNODE,CN);
End;
End;
{AFTABGARDAN Get Recersive Node}
Procedure GetRecrsivNodeTreeView(RMenuItemA:TMenuItem;RTreeV iewA:TTreeView;RPareTNode:TTreeNode;Const CN:TNameCaptioMenu=CaptionOnly);
Var I:Integer; tmpTNODE,ImTNode :TTreeNode;
Begin
For I:=0 to RMenuItemA.Count-1 Do
Begin
IF (RMenuItemA.Items[I].Count>0) And (RMenuItemA.Items[I].Enabled)And (RMenuItemA.Items[I].Visible) Then
Begin
tmpTNODE:=RPareTNode;
RPareTNode:=RTreeViewA.Items.AddChild(RPareTNode,G etMenuStr(RMenuItemA.Items[I],CN));
RPareTNode.ImageIndex:=RMenuItemA.Items[I].ImageIndex;
GetRecrsivNodeTreeView(RMenuItemA.Items[I],RTreeViewA,RPareTNode,CN);
RPareTNode:=tmpTNODE;
End
Else
IF (Not RMenuItemA.Items[I].IsLine) And (RMenuItemA.Items[I].Enabled)And (RMenuItemA.Items[I].Visible) Then
Begin
ImTNode:=RTreeViewA.Items.AddChild(RPareTNode,GetM enuStr(RMenuItemA.Items[I],CN));
ImTNode.ImageIndex:=RMenuItemA.Items[I].ImageIndex;
End
End;
End;
{End Internal And Recrsive Rottin}
بقیه اشم که راحته اونی رو که کاربر انتخاب می کنه به لیست حق دسترسی هات بده یا ...
موفق باشی
م.داودنیا
محمد دادودنیا
چهارشنبه 15 آذر 1385, 03:46 صبح
ولی من یه مشکل دیگه دارم چطور می شه یه TreeView همراه با چک باکس ساخت
یعنی هرکدوم از نودهای اون یه چک باکس داشته باشه که کاربر بتونه اونو ON یا OFF*بکنه
از دوستان اگه کسی می دونه لطف کنه بگه
محمد دادودنیا
پنج شنبه 16 آذر 1385, 19:53 عصر
برای این کارم راه حل پیدا کردم میشه Tree*رو به یه Imagelist ربط داد که در اون شکل یه چک باکس (Checkedو UnChecked) رو در اون قرار بدی بعد با کلیک کاربر چک یا Unchecked رو با تغییر شکل به کاربر نشان بدی (روش زیر آبی قشنکیه) همون چیزی که در شکلی که فرستادی باعث شد بفهمم اون چکار کرده
ممنون از کمک ناخواسته اتون
davoodmz
شنبه 02 دی 1385, 13:37 عصر
آقای دادودنیا
با سلام
لطفاً بیشتر توضیح بفرمائید. یا لطف کرده یک تیکه کد با برنامه کوچکی را بگذارید برای دانلود.
اگه این روش شما جواب بده و راست چین کردن تری ویو که در این سایت محترم می باشد را باهم انجام دهیم یک چیز عالی میشه
من کند شما را نوشتم که مین منو وارد تری ویو بشه ولی نشد. چیزی باید یوز کرد یا ....
با تشکر فراوان
داود
safasoft
چهارشنبه 21 شهریور 1386, 12:56 عصر
با سلام
جناب داوود نیا اگر امکان دارد treeview خود را برای download قرار دهید
سپاسگذارم
SYNDROME
چهارشنبه 21 شهریور 1386, 14:01 عصر
با سلام
با سلام خدمت شما
من چنین کاری نکردم و می خواهم بدونم که آیا اینها در روی جدول ذخیره می شوند. چطوری این کار را انجام بدهم
باتشکر از شما
یا اینکه کامپونتی برای این کار هست
شما Treeفوق را می سازید و ار کدام از Node ها یک خاصیت StateIndexدارند که شما آن را با یک عدد یکتا پر می کنید و اگر برای کاربری Nodeمورد نظر فعال بود StateIndexآن را ذخیره می کنید و در جاهای مورد نظر کد آن را چک کنید.
با خاصیت IndexImageهم می توانی Iconها را فعال کنی.
موفق باشید
rezamahdizadeh
دوشنبه 06 اسفند 1386, 11:43 صبح
با سلام من برای این کار یه چنین روشی به کار بردم
1- MainMenu رو داخل یه TreeViewمی ریزم بعد هر کدوم از منوها رو که می خوام به کاربر دسترسی ندم با انتخاب توسط کاربر و اضافه کردن اسم اون منو به لیستی در یکی از بانکهام در هنگام ساختن صفحه اصلی پروژه ام اونو Free می کنم
حالا چطور Main Menu رو توی درخت می ریزم به این صورت
Procedure SetMainMenuToTreeView(MainMenuA:TMainMenu;TreeView A:TTreeView;Const CanClear:Boolean=True;CN:TNameCaptioMenu=CaptionOn ly);
Var
I:Integer;
tmpTNODE:TTreeNode;
tmpMItem:TMenuItem;
Begin
IF CanClear Then TreeViewA.Items.Clear;
For I:=0 to MainMenuA.Items.Count-1 Do
Begin
IF MainMenuA.Items[i].Visible And MainMenuA.Items[i].Enabled Then
Begin
tmpTNODE:=TreeViewA.Items.Add(nil,GetMenuStr(MainM enuA.Items[i],CN));
tmpTNODE.ImageIndex:=MainMenuA.Items[i].ImageIndex;
GetRecrsivNodeTreeView(MainMenuA.Items[i],TreeViewA,tmpTNODE,CN);
End;
End;
{AFTABGARDAN Get Recersive Node}
Procedure GetRecrsivNodeTreeView(RMenuItemA:TMenuItem;RTreeV iewA:TTreeView;RPareTNode:TTreeNode;Const CN:TNameCaptioMenu=CaptionOnly);
Var I:Integer; tmpTNODE,ImTNode :TTreeNode;
Begin
For I:=0 to RMenuItemA.Count-1 Do
Begin
IF (RMenuItemA.Items[i].Count>0) And (RMenuItemA.Items[i].Enabled)And (RMenuItemA.Items[i].Visible) Then
Begin
tmpTNODE:=RPareTNode;
RPareTNode:=RTreeViewA.Items.AddChild(RPareTNode,G etMenuStr(RMenuItemA.Items[i],CN));
RPareTNode.ImageIndex:=RMenuItemA.Items[i].ImageIndex;
GetRecrsivNodeTreeView(RMenuItemA.Items[i],RTreeViewA,RPareTNode,CN);
RPareTNode:=tmpTNODE;
End
Else
IF (Not RMenuItemA.Items[i].IsLine) And (RMenuItemA.Items[i].Enabled)And (RMenuItemA.Items[i].Visible) Then
Begin
ImTNode:=RTreeViewA.Items.AddChild(RPareTNode,GetM enuStr(RMenuItemA.Items[i],CN));
ImTNode.ImageIndex:=RMenuItemA.Items[i].ImageIndex;
End
End;
End;
{End Internal And Recrsive Rottin}
بقیه اشم که راحته اونی رو که کاربر انتخاب می کنه به لیست حق دسترسی هات بده یا ...
موفق باشی
م.داودنیا
TNameCaptioMenu چگونه تعریف می شود؟همچنین GetMenuStr
Archin
سه شنبه 07 اسفند 1386, 16:52 عصر
سلام من می خوام هر کدام از فیلدهای یک درخت از جنس رکورد و دارای سه فیلد باشه لطفاً راهنمایی کنید
SYNDROME
چهارشنبه 08 اسفند 1386, 08:04 صبح
سلام من می خوام هر کدام از فیلدهای یک درخت از جنس رکورد و دارای سه فیلد باشه لطفاً راهنمایی کنید
دقیقاً توضیح دهید چرا سه فیلد؟
هر Node بیانگر یک دسترسی است و می توانید Caption خاص خود را داشته باشد.
البته می توانید سه فیلد را پشت سر هم نمایش داده و مثلا با "_" از هم جدا کنید.
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.