Sayfayý Yazdýr | Pencereyi Kapat

metin "10 Kullanci" ve nokta ayni satir degil

Nereden Yazdýrýldýðý: Clomosy | Forum
Kategori: Genel Programlama
Forum Adý: Genel Ýþlemler
Forum Tanýmlamasý: TRObject dili ile programlama yaparken karþýlaþýlan genel iþlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1618
Tarih: 16 Temmuz 2026 Saat 19:41
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: metin "10 Kullanci" ve nokta ayni satir degil
Mesajý Yazan: Barthe_dev
Konu: metin "10 Kullanci" ve nokta ayni satir degil
Mesaj Tarihi: 16 Temmuz 2026 Saat 16:57
var
  MembersForm : TclForm;
  ScrollBox : TCLVertScrollBox;
  ShellContainer : TclLayout;
  
  // Layouts de la page (Déclarés dans l'ordre inverse pour le rendu alTop)
  UserListContainer : TclLayout;
  FilterLayout : TclLayout;
  SearchLayout : TclLayout;
  HeaderLayout,HeaderLayoutactif,layout2,layout3,layout4 : TclLayout;
  StatusBarLayout : TclLayout;

  // Éléments du Header
  BtnBack : TclProButton;
  BtnAddUser : TclProButton;
  LblHeaderTitle,label1,label2,label3,label4 : TclProLabel;
  DotCyan, DotGreen, DotOrange : TclProPanel;
  TimerPulsation : TclTimer;
  PulsationState : Boolean; // Variable pour suivre l'état de l'effet de respiration

  // Zone de recherche
  SearchEdit : TclProEdit;

  // Filtres
  BtnFilterAll, BtnFilterAdmin, BtnFilterDepot, BtnFilterSekreter : TclProButton;

  // Cartes Utilisateurs
  UserCard1, UserCard2, UserCard3 : TclProPanel;
  
  // Barre de navigation inférieure (Tab Bar)
  TabBarLayout : TclLayout;
  BtnTabDash, BtnTabUsers, BtnTabStock, BtnTabReports, BtnTabSettings : TclProButton;

// ---------------------------------------------------------
// COMPOSANT MODULAIRE : GÉNÉRATEUR DE CARTES UTILISATEUR (UserCard)
// ---------------------------------------------------------
function CreateUserCard(AParent : TObject; AName, AFullName, ARole, AInitials, AStatusColor, AAvatarBgColor : String) : TclProPanel;
var
  CardPanel, AvatarPanel, StatusDot : TclProPanel;
  LblInitials, LblName, LblRole : TclProLabel;
  TextLayout : TclLayout;
  BtnDelete : TclProButton;
{
  CardPanel = MembersForm.AddNewProPanel(AParent, AName);
  CardPanel.Align = alTop;
  CardPanel.Height = 72;
  CardPanel.Margins.Left = 4;
  CardPanel.Margins.Right = 4;
  CardPanel.Margins.Top = 8;
  
  // Styles de la carte (Navy dark, bordure acier)
  CardPanel.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  CardPanel.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  CardPanel.clProSettings.BorderWidth = 1;
  CardPanel.clProSettings.RoundWidth = 14;
  CardPanel.clProSettings.RoundHeight = 14;
  CardPanel.SetclProSettings(CardPanel.clProSettings);

  // 1. Avatar de l'utilisateur (Rond à gauche)
  AvatarPanel = MembersForm.AddNewProPanel(CardPanel, AName + '_Avatar');
  AvatarPanel.Align = alLeft;
  AvatarPanel.Width = 44;
  AvatarPanel.Height = 44;
  AvatarPanel.Margins.Left = 12;
  AvatarPanel.Margins.Top = 14;
  AvatarPanel.Margins.Bottom = 14;
  AvatarPanel.clProSettings.BackgroundColor = clAlphaColor.clHexToColor(AAvatarBgColor);
  AvatarPanel.clProSettings.RoundWidth = 22;
  AvatarPanel.clProSettings.RoundHeight = 22;
  AvatarPanel.SetclProSettings(AvatarPanel.clProSettings);

  LblInitials = MembersForm.AddNewProLabel(AvatarPanel, AName + '_Initials', AInitials);
  LblInitials.Align = alCenter;
  LblInitials.Width = 22;
  LblInitials.Height = 20;
  LblInitials.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  LblInitials.clProSettings.FontSize = 14;
  LblInitials.clProSettings.TextSettings.Font.Style = [fsBold];
  //LblInitials.clProSettings.TextSettings.HorzAlign = clTextAlignCenter;
  LblInitials.SetclProSettings(LblInitials.clProSettings);

  // 2. Zone des textes (Nom & Rôle)
  TextLayout = MembersForm.AddNewLayout(CardPanel, AName + '_TextLay');
  TextLayout.Align = alLeft;
  TextLayout.Width = 160;
  TextLayout.Margins.Left = 12;

  LblName = MembersForm.AddNewProLabel(TextLayout, AName + '_Name', AFullName);
  LblName.Align = alTop;
  LblName.Height = 20;
  LblName.Margins.Top = 16;
  LblName.clProSettings.FontColor = clAlphaColor.clHexToColor('#e8eef5');
  LblName.clProSettings.FontSize = 14;
  LblName.clProSettings.TextSettings.Font.Style = [fsBold];
  LblName.SetclProSettings(LblName.clProSettings);

  LblRole = MembersForm.AddNewProLabel(TextLayout, AName + '_Role', ARole);
  LblRole.Align = alTop;
  LblRole.Height = 16;
  LblRole.clProSettings.FontColor = clAlphaColor.clHexToColor('#6b8aaa');
  LblRole.clProSettings.FontSize = 11;
  LblRole.SetclProSettings(LblRole.clProSettings);

  // 3. Bouton d'action à droite (Corbeille de suppression)
  BtnDelete = MembersForm.AddNewProButton(CardPanel, AName + '_BtnDel', '');
  BtnDelete.Align = alRight;
  BtnDelete.Width = 30;
  BtnDelete.Height = 30;
  BtnDelete.Margins.Right = 12;
  BtnDelete.Margins.Top = 21;
  BtnDelete.Margins.Bottom = 21;
  BtnDelete.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#ff4d6a15'); // Fond rouge transparent
  BtnDelete.clProSettings.RoundWidth = 8;
  BtnDelete.clProSettings.RoundHeight = 8;
  // Icône de suppression blanche/rouge
  MembersForm.SetImage(BtnDelete, ' https://raw.githubusercontent.com/Barthez2023/Artificial_Intelligence/main/clomosyImage/img10.png" rel="nofollow - https://raw.githubusercontent.com/Barthez2023/Artificial_Intelligence/main/clomosyImage/img10.png ');
  BtnDelete.SetclProSettings(BtnDelete.clProSettings);

  // 4. Point indicateur de statut en ligne / hors ligne (Glow Dot)
  StatusDot = MembersForm.AddNewProPanel(CardPanel, AName + '_StatusDot');
  StatusDot.Align = alRight;
  StatusDot.Width = 8;
  StatusDot.Height = 8;
  StatusDot.Margins.Right = 16;
  StatusDot.Margins.Top = 32;
  StatusDot.Margins.Bottom = 32;
  StatusDot.clProSettings.BackgroundColor = clAlphaColor.clHexToColor(AStatusColor);
  StatusDot.clProSettings.RoundWidth = 4;
  StatusDot.clProSettings.RoundHeight = 4;
  StatusDot.SetclProSettings(StatusDot.clProSettings);

  Result = CardPanel;
}

// ---------------------------------------------------------
// ACTIONS & ÉVÉNEMENTS
// ---------------------------------------------------------
void OnBackClick;
{
  MembersForm.Close;
}

void OnAddUserClick;
{
  ShowMessage('Ouverture du formulaire d''ajout de membre...');
}

void OnTimerRespiration;
{
  if (PulsationState)
  {
    // Étape basse : On atténue la luminosité en ajoutant de la transparence ('40' à la fin du code Hexa)
    DotCyan.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#00d4ff40');
    DotGreen.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4ade8040');
    DotOrange.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#fb923c40');
    PulsationState = False;
  }
  else
   {
    // Étape haute : On restaure la pleine opacité d'origine
    DotCyan.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#00d4ff');
    DotGreen.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4ade80');
    DotOrange.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#fb923c');
    PulsationState = True;
  }

  // Mise à jour indispensable du rendu visuel de chaque point
  DotCyan.SetclProSettings(DotCyan.clProSettings);
  DotGreen.SetclProSettings(DotGreen.clProSettings);
  DotOrange.SetclProSettings(DotOrange.clProSettings);
}

// ---------------------------------------------------------
// INITIALISATION DE LA PAGE GESTION DES MEMBRES
// ---------------------------------------------------------
{
  MembersForm = TclForm.Create(Self);
  MembersForm.SetFormColor('#080d14', '#080d14', clGVertical);

  ScrollBox = MembersForm.AddNewVertScrollBox(MembersForm, 'ScrollBox');
  ScrollBox.Align = alClient;

  ShellContainer = MembersForm.AddNewLayout(ScrollBox, 'ShellContainer');
  ShellContainer.Align = alTop;
  ShellContainer.Height = 812;
  ShellContainer.Margins.Left = 16;
  ShellContainer.Margins.Right = 16;
  ShellContainer.Margins.Top = 10;

  // =========================================================================
  // ORDRE DE RENDU INVERSÉ ALTOP (Du bas vers le haut)
  // =========================================================================

  // [ ÉTAPE 4 : LISTE DES UTILISATEURS (User List Container) ]
  UserListContainer = MembersForm.AddNewLayout(ShellContainer, 'UserListContainer');
  UserListContainer.Align = alTop;
  UserListContainer.Height = 400;
  UserListContainer.Margins.Top = 10;

  // Injection des membres avec notre générateur modulaire
  UserCard1 = CreateUserCard(UserListContainer, 'UserAli', 'Ali Yýlmaz', 'Administrateur', 'AY', '#22c55e', '#1d4ed8');
  UserCard2 = CreateUserCard(UserListContainer, 'UserAyse', 'Ayþe Demir', 'Dépôt Sorumlusu', 'AD', '#22c55e', '#a855f7');
  UserCard3 = CreateUserCard(UserListContainer, 'UserMehmet', 'Mehmet Kaya', 'Secrétaire', 'MK', '#ff4d6a', '#dd7b40');


  // [ ÉTAPE 3 : BARRE DE FILTRES RAPIDES ]
  FilterLayout = MembersForm.AddNewLayout(ShellContainer, 'FilterLayout');
  FilterLayout.Align = alTop;
  FilterLayout.Height = 40;
  FilterLayout.Margins.Top = 12;

  BtnFilterAll = MembersForm.AddNewProButton(FilterLayout, 'BtnFilterAll', 'Tous');
  BtnFilterAll.Align = alLeft; BtnFilterAll.Width = 65; BtnFilterAll.Height = 32;
  BtnFilterAll.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#00d4ff'); // Filtre Actif
  BtnFilterAll.clProSettings.FontColor = clAlphaColor.clHexToColor('#080d14');
  BtnFilterAll.clProSettings.FontSize = 11; BtnFilterAll.clProSettings.TextSettings.Font.Style = [fsBold];
  BtnFilterAll.clProSettings.RoundWidth = 8; BtnFilterAll.clProSettings.RoundHeight = 8;
  BtnFilterAll.SetclProSettings(BtnFilterAll.clProSettings);

  BtnFilterAdmin = MembersForm.AddNewProButton(FilterLayout, 'BtnFilterAdmin', 'Admins');
  BtnFilterAdmin.Align = alLeft; BtnFilterAdmin.Width = 75; BtnFilterAdmin.Height = 32; BtnFilterAdmin.Margins.Left = 6;
  BtnFilterAdmin.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnFilterAdmin.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  BtnFilterAdmin.clProSettings.BorderWidth = 1;
  BtnFilterAdmin.clProSettings.FontColor = clAlphaColor.clHexToColor('#6b8aaa');
  BtnFilterAdmin.clProSettings.FontSize = 11;
  BtnFilterAdmin.clProSettings.RoundWidth = 8; BtnFilterAdmin.clProSettings.RoundHeight = 8;
  BtnFilterAdmin.SetclProSettings(BtnFilterAdmin.clProSettings);

  BtnFilterDepot = MembersForm.AddNewProButton(FilterLayout, 'BtnFilterDepot', 'Dépôt');
  BtnFilterDepot.Align = alLeft; BtnFilterDepot.Width = 75; BtnFilterDepot.Height = 32; BtnFilterDepot.Margins.Left = 6;
  BtnFilterDepot.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnFilterDepot.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  BtnFilterDepot.clProSettings.BorderWidth = 1;
  BtnFilterDepot.clProSettings.FontColor = clAlphaColor.clHexToColor('#6b8aaa');
  BtnFilterDepot.clProSettings.FontSize = 11;
  BtnFilterDepot.clProSettings.RoundWidth = 8; BtnFilterDepot.clProSettings.RoundHeight = 8;
  BtnFilterDepot.SetclProSettings(BtnFilterDepot.clProSettings);

  BtnFilterSekreter = MembersForm.AddNewProButton(FilterLayout, 'BtnFilterSekreter', 'Secrétaires');
  BtnFilterSekreter.Align = alClient; BtnFilterSekreter.Height = 32; BtnFilterSekreter.Margins.Left = 6;
  BtnFilterSekreter.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnFilterSekreter.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  BtnFilterSekreter.clProSettings.BorderWidth = 1;
  BtnFilterSekreter.clProSettings.FontColor = clAlphaColor.clHexToColor('#6b8aaa');
  BtnFilterSekreter.clProSettings.FontSize = 11;
  BtnFilterSekreter.clProSettings.RoundWidth = 8; BtnFilterSekreter.clProSettings.RoundHeight = 8;
  BtnFilterSekreter.SetclProSettings(BtnFilterSekreter.clProSettings);


  // [ ÉTAPE 2 : BARRE DE RECHERCHE (SearchEdit) ]
  SearchLayout = MembersForm.AddNewLayout(ShellContainer, 'SearchLayout');
  SearchLayout.Align = alTop;
  SearchLayout.Height = 46;
  SearchLayout.Margins.Top = 12;

  SearchEdit = MembersForm.AddNewProEdit(SearchLayout, 'SearchEdit', 'Rechercher un membre...');
  SearchEdit.Align = alClient;
  SearchEdit.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  SearchEdit.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  SearchEdit.clProSettings.BorderWidth = 1;
  SearchEdit.clProSettings.FontColor = clAlphaColor.clHexToColor('#e8eef5');
  SearchEdit.clProSettings.FontSize = 12;
  SearchEdit.clProSettings.RoundWidth = 10; SearchEdit.clProSettings.RoundHeight = 10;
  SearchEdit.SetclProSettings(SearchEdit.clProSettings);


  // [ ÉTAPE 1 : HEADER GESTION DES MEMBRES ]
  HeaderLayout = MembersForm.AddNewLayout(ShellContainer, 'HeaderLayout');
  HeaderLayout.Align = alTop;
  HeaderLayout.Height = 55;

  // Bouton Retour (Gauche)
  label1 = MembersForm.AddNewProLabel(HeaderLayout, 'label1', 'GESTIONNAIRES DES UTILISATEURS');
  label1.Align = alTop;
  label1.Margins.Left = 14; 
  label1.Margins.Top = 16;
  label1.clProSettings.FontColor = clAlphaColor.clHexToColor('#446580');
  label1.clProSettings.FontSize = 12;
  label1.clProSettings.TextSettings.Font.Style = [fsBold];
  label1.SetclProSettings(label1.clProSettings);


  // Titre "MEMBRES" (Centre)
  LblHeaderTitle = MembersForm.AddNewProLabel(HeaderLayout, 'LblHeaderTitle', 'Utilisateurs & roles');
  LblHeaderTitle.Align = alTop;
  LblHeaderTitle.Margins.Left = 14; 
  LblHeaderTitle.Height = 40;
  LblHeaderTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#e8eef5');
  LblHeaderTitle.clProSettings.FontSize = 30;
  LblHeaderTitle.clProSettings.TextSettings.Font.Style = [fsBold];
  LblHeaderTitle.SetclProSettings(LblHeaderTitle.clProSettings);
  
  
  
  
  // [ ÉTAPE x : HEADER GESTION DES MEMBRES actifs ]
  HeaderLayoutactif = MembersForm.AddNewLayout(ShellContainer, 'HeaderLayoutactif');
  HeaderLayoutactif.Align = alTop;
  HeaderLayoutactif.Height = 55;
  
  
  //creation du layout2
  layout2 = MembersForm.AddNewLayout(HeaderLayoutactif, 'layout2');
  layout2.Align = alLeft;
  layout2.Height = 55;
  layout2.Width = 120; 
  layout2.Margins.Left = 14; 
  layout2.Margins.Top = 10;
  
  //creation du Dot
  DotCyan = MembersForm.AddNewProPanel(layout2, 'DotCyan');
  DotCyan.Align = alLeft; 
  DotCyan.Width = 8; 
  DotCyan.Height = 8;
  DotCyan.Margins.Right =6;
  DotCyan.Margins.Bottom = 35;
  DotCyan.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#00d4ff'); // Opaque au départ
  DotCyan.clProSettings.RoundWidth = 4; 
  DotCyan.clProSettings.RoundHeight = 4;
  DotCyan.SetclProSettings(DotCyan.clProSettings);
  
  label2 = MembersForm.AddNewProLabel(layout2, 'label2', '10 Membres');
  label2.Align = alLeft; 
  label2.Width = 90; 
  label2.clProSettings.FontColor = clAlphaColor.clHexToColor('#00d4ff');
  label2.clProSettings.FontSize = 14; 
  label2.clProSettings.TextSettings.Font.Style = [fsBold];
  label2.SetclProSettings(label2.clProSettings);

 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  //creation du layout3
  layout3 = MembersForm.AddNewLayout(HeaderLayoutactif, 'layout3');
  layout3.Align = alLeft;
  layout3.Height = 55;
  layout3.Width = 110; 
  layout3.Margins.Left = 14; 
  layout3.Margins.Top = 10;
  // --- 2. GROUPE ACTIFS (VERT) ---
  label3 = MembersForm.AddNewProLabel(layout3, 'label3', '5 Actifs');
  label3.Align = alLeft; 
  label3.Width = 80; 
  label3.Margins.Left = 10; 
  label3.clProSettings.FontColor = clAlphaColor.clHexToColor('#4ade80');
  label3.clProSettings.FontSize = 14; 
  label3.clProSettings.TextSettings.Font.Style = [fsBold];
  label3.SetclProSettings(label3.clProSettings);

  DotGreen = MembersForm.AddNewProPanel(layout3, 'DotGreen');
  DotGreen.Align = alLeft; 
  DotGreen.Width = 8; 
  DotGreen.Height = 8;
  DotGreen.Margins.Right =10;
  DotGreen.Margins.Bottom =35;
  DotGreen.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4ade80');
  DotGreen.clProSettings.RoundWidth = 4; 
  DotGreen.clProSettings.RoundHeight = 4;
  DotGreen.SetclProSettings(DotGreen.clProSettings);


  //creation du layout4
  layout4 = MembersForm.AddNewLayout(HeaderLayoutactif, 'layout4');
  layout4.Align = alLeft;
  layout4.Height = 55;
  layout4.Width = 100; 
  layout4.Margins.Left = 14; 
  layout4.Margins.Top = 10;
  // --- 3. GROUPE INACTIFS (ORANGE) ---
  label4 = MembersForm.AddNewProLabel(layout4, 'label4', '5 Inactifs');
  label4.Align = alLeft; 
  label4.Width = 80; 
  label4.Margins.Left = 10; 
  //label4.Margins.Top = 16;
  label4.clProSettings.FontColor = clAlphaColor.clHexToColor('#fb923c');
  label4.clProSettings.FontSize = 14; 
  label4.clProSettings.TextSettings.Font.Style = [fsBold];
  label4.SetclProSettings(label4.clProSettings);

  DotOrange = MembersForm.AddNewProPanel(layout4, 'DotOrange');
  DotOrange.Align = alLeft; 
  DotOrange.Width = 8; 
  DotOrange.Height = 8;
  DotOrange.Margins.Right =10;
  DotOrange.Margins.Bottom = 35;
  DotOrange.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#fb923c');
  DotOrange.clProSettings.RoundWidth = 4; 
  DotOrange.clProSettings.RoundHeight = 4;
  DotOrange.SetclProSettings(DotOrange.clProSettings);




  // --- CONFIGURATION DU TIMER DE RESPIRATION ---
  PulsationState = True;
  TimerPulsation = MembersForm.AddNewTimer(MembersForm, 'TimerPulsation', 750); // Toutes les 750ms pour une transition douce
  TimerPulsation.Enabled = True;
  MembersForm.AddNewEvent(TimerPulsation, tbeOnTimer, 'OnTimerRespiration');
  
  
  
  
  
  
  
  

  
  
  
  
  
  
  
  
  

  // [ ÉTAPE 0 : BARRE D'ÉTAT SYSTÈME (Status Bar) ]
  StatusBarLayout = MembersForm.AddNewLayout(ShellContainer, 'StatusBarLayout');
  StatusBarLayout.Align = alTop;
  StatusBarLayout.Height = 35;


  // =========================================================================
  // BARRE DE NAVIGATION INFÉRIEURE (Tab Bar Active sur "Users")
  // =========================================================================
  TabBarLayout = MembersForm.AddNewLayout(MembersForm, 'TabBarLayout');
  TabBarLayout.Align = alBottom; TabBarLayout.Height = 58;
  
  BtnTabDash = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabDash', 'Dashboard');
  BtnTabDash.Align = alLeft; BtnTabDash.Width = 74;
  BtnTabDash.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabDash.clProSettings.FontColor = clAlphaColor.clHexToColor('#3d5a7a');
  BtnTabDash.clProSettings.FontSize = 9;
  BtnTabDash.SetclProSettings(BtnTabDash.clProSettings);

  BtnTabUsers = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabUsers', 'Membres');
  BtnTabUsers.Align = alLeft; BtnTabUsers.Width = 74;
  BtnTabUsers.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabUsers.clProSettings.FontColor = clAlphaColor.clHexToColor('#00d4ff'); // Actif (Bleu Glowing)
  BtnTabUsers.clProSettings.FontSize = 9; 
  BtnTabUsers.clProSettings.TextSettings.Font.Style = [fsBold];
  BtnTabUsers.SetclProSettings(BtnTabUsers.clProSettings);

  BtnTabStock = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabStock', 'Stock');
  BtnTabStock.Align = alLeft; BtnTabStock.Width = 74;
  BtnTabStock.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabStock.clProSettings.FontColor = clAlphaColor.clHexToColor('#3d5a7a');
  BtnTabStock.clProSettings.FontSize = 9; BtnTabStock.SetclProSettings(BtnTabStock.clProSettings);

  BtnTabReports = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabReports', 'Reports');
  BtnTabReports.Align = alLeft; BtnTabReports.Width = 74;
  BtnTabReports.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabReports.clProSettings.FontColor = clAlphaColor.clHexToColor('#3d5a7a');
  BtnTabReports.clProSettings.FontSize = 9; BtnTabReports.SetclProSettings(BtnTabReports.clProSettings);

  BtnTabSettings = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabSettings', 'Settings');
  BtnTabSettings.Align = alClient;
  BtnTabSettings.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabSettings.clProSettings.FontColor = clAlphaColor.clHexToColor('#3d5a7a');
  BtnTabSettings.clProSettings.FontSize = 9; 
  BtnTabSettings.SetclProSettings(BtnTabSettings.clProSettings);

  MembersForm.Run;
  
  }
  
  
  
  
  
  
  
  
  
https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">



Cevaplar:
Mesajý Yazan: kayra12
Mesaj Tarihi: 16 Temmuz 2026 Saat 17:10
  Ýyi çalýþmalar dilerim 
var
  MembersForm : TclForm;
  ScrollBox : TCLVertScrollBox;
  ShellContainer : TclLayout;
  
  // Layouts de la page (Déclarés dans l'ordre inverse pour le rendu alTop)
  UserListContainer : TclLayout;
  FilterLayout : TclLayout;
  SearchLayout : TclLayout;
  HeaderLayout,HeaderLayoutactif,layout2,layout3,layout4 : TclLayout;
  StatusBarLayout : TclLayout;

  // Éléments du Header
  BtnBack : TclProButton;
  BtnAddUser : TclProButton;
  LblHeaderTitle,label1,label2,label3,label4 : TclProLabel;
  DotCyan, DotGreen, DotOrange : TclProPanel;
  TimerPulsation : TclTimer;
  PulsationState : Boolean; // Variable pour suivre l'état de l'effet de respiration

  // Zone de recherche
  SearchEdit : TclProEdit;

  // Filtres
  BtnFilterAll, BtnFilterAdmin, BtnFilterDepot, BtnFilterSekreter : TclProButton;

  // Cartes Utilisateurs
  UserCard1, UserCard2, UserCard3 : TclProPanel;
  
  // Barre de navigation inférieure (Tab Bar)
  TabBarLayout : TclLayout;
  BtnTabDash, BtnTabUsers, BtnTabStock, BtnTabReports, BtnTabSettings : TclProButton;

// ---------------------------------------------------------
// COMPOSANT MODULAIRE : GÉNÉRATEUR DE CARTES UTILISATEUR (UserCard)
// ---------------------------------------------------------
function CreateUserCard(AParent : TObject; AName, AFullName, ARole, AInitials, AStatusColor, AAvatarBgColor : String) : TclProPanel;
var
  CardPanel, AvatarPanel, StatusDot : TclProPanel;
  LblInitials, LblName, LblRole : TclProLabel;
  TextLayout : TclLayout;
  BtnDelete : TclProButton;
{
  CardPanel = MembersForm.AddNewProPanel(AParent, AName);
  CardPanel.Align = alTop;
  CardPanel.Height = 72;
  CardPanel.Margins.Left = 4;
  CardPanel.Margins.Right = 4;
  CardPanel.Margins.Top = 8;
  
  // Styles de la carte (Navy dark, bordure acier)
  CardPanel.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  CardPanel.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  CardPanel.clProSettings.BorderWidth = 1;
  CardPanel.clProSettings.RoundWidth = 14;
  CardPanel.clProSettings.RoundHeight = 14;
  CardPanel.SetclProSettings(CardPanel.clProSettings);

  // 1. Avatar de l'utilisateur (Rond à gauche)
  AvatarPanel = MembersForm.AddNewProPanel(CardPanel, AName + '_Avatar');
  AvatarPanel.Align = alLeft;
  AvatarPanel.Width = 44;
  AvatarPanel.Height = 44;
  AvatarPanel.Margins.Left = 12;
  AvatarPanel.Margins.Top = 14;
  AvatarPanel.Margins.Bottom = 14;
  AvatarPanel.clProSettings.BackgroundColor = clAlphaColor.clHexToColor(AAvatarBgColor);
  AvatarPanel.clProSettings.RoundWidth = 22;
  AvatarPanel.clProSettings.RoundHeight = 22;
  AvatarPanel.SetclProSettings(AvatarPanel.clProSettings);

  LblInitials = MembersForm.AddNewProLabel(AvatarPanel, AName + '_Initials', AInitials);
  LblInitials.Align = alCenter;
  LblInitials.Width = 22;
  LblInitials.Height = 20;
  LblInitials.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  LblInitials.clProSettings.FontSize = 14;
  LblInitials.clProSettings.TextSettings.Font.Style = [fsBold];
  LblInitials.SetclProSettings(LblInitials.clProSettings);

  // 2. Zone des textes (Nom & Rôle)
  TextLayout = MembersForm.AddNewLayout(CardPanel, AName + '_TextLay');
  TextLayout.Align = alLeft;
  TextLayout.Width = 160;
  TextLayout.Margins.Left = 12;

  LblName = MembersForm.AddNewProLabel(TextLayout, AName + '_Name', AFullName);
  LblName.Align = alTop;
  LblName.Height = 20;
  LblName.Margins.Top = 16;
  LblName.clProSettings.FontColor = clAlphaColor.clHexToColor('#e8eef5');
  LblName.clProSettings.FontSize = 14;
  LblName.clProSettings.TextSettings.Font.Style = [fsBold];
  LblName.SetclProSettings(LblName.clProSettings);

  LblRole = MembersForm.AddNewProLabel(TextLayout, AName + '_Role', ARole);
  LblRole.Align = alTop;
  LblRole.Height = 16;
  LblRole.clProSettings.FontColor = clAlphaColor.clHexToColor('#6b8aaa');
  LblRole.clProSettings.FontSize = 11;
  LblRole.SetclProSettings(LblRole.clProSettings);

  // 3. Bouton d'action à droite (Corbeille de suppression)
  BtnDelete = MembersForm.AddNewProButton(CardPanel, AName + '_BtnDel', '');
  BtnDelete.Align = alRight;
  BtnDelete.Width = 30;
  BtnDelete.Height = 30;
  BtnDelete.Margins.Right = 12;
  BtnDelete.Margins.Top = 21;
  BtnDelete.Margins.Bottom = 21;
  BtnDelete.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#ff4d6a15'); // Fond rouge transparent
  BtnDelete.clProSettings.RoundWidth = 8;
  BtnDelete.clProSettings.RoundHeight = 8;
  // Icône de suppression blanche/rouge
  MembersForm.SetImage(BtnDelete, ' https://raw.githubusercontent.com/Barthez2023/Artificial_Intelligence/main/clomosyImage/img10.png" rel="nofollow - https://raw.githubusercontent.com/Barthez2023/Artificial_Intelligence/main/clomosyImage/img10.png ');
  BtnDelete.SetclProSettings(BtnDelete.clProSettings);

  // 4. Point indicateur de statut en ligne / hors ligne (Glow Dot)
  StatusDot = MembersForm.AddNewProPanel(CardPanel, AName + '_StatusDot');
  StatusDot.Align = alRight;
  StatusDot.Width = 8;
  StatusDot.Height = 8;
  StatusDot.Margins.Right = 16;
  StatusDot.Margins.Top = 32;
  StatusDot.Margins.Bottom = 32;
  StatusDot.clProSettings.BackgroundColor = clAlphaColor.clHexToColor(AStatusColor);
  StatusDot.clProSettings.RoundWidth = 4;
  StatusDot.clProSettings.RoundHeight = 4;
  StatusDot.SetclProSettings(StatusDot.clProSettings);

  Result = CardPanel;
}

// ---------------------------------------------------------
// ACTIONS & ÉVÉNEMENTS
// ---------------------------------------------------------
void OnBackClick;
{
  MembersForm.Close;
}

void OnAddUserClick;
{
  ShowMessage('Ouverture du formulaire d''ajout de membre...');
}

void OnTimerRespiration;
{
  if (PulsationState)
  {
    // Étape basse : On atténue la luminosité en ajoutant de la transparence ('40' à la fin du code Hexa)
    DotCyan.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#00d4ff40');
    DotGreen.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4ade8040');
    DotOrange.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#fb923c40');
    PulsationState = False;
  }
  else
  {
    // Étape haute : On restaure la pleine opacité d'origine
    DotCyan.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#00d4ff');
    DotGreen.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4ade80');
    DotOrange.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#fb923c');
    PulsationState = True;
  }

  // Mise à jour indispensable du rendu visuel de chaque point
  DotCyan.SetclProSettings(DotCyan.clProSettings);
  DotGreen.SetclProSettings(DotGreen.clProSettings);
  DotOrange.SetclProSettings(DotOrange.clProSettings);
}

// ---------------------------------------------------------
// INITIALISATION DE LA PAGE GESTION DES MEMBRES
// ---------------------------------------------------------
{
  MembersForm = TclForm.Create(Self);
  MembersForm.SetFormColor('#080d14', '#080d14', clGVertical);

  ScrollBox = MembersForm.AddNewVertScrollBox(MembersForm, 'ScrollBox');
  ScrollBox.Align = alClient;

  ShellContainer = MembersForm.AddNewLayout(ScrollBox, 'ShellContainer');
  ShellContainer.Align = alTop;
  ShellContainer.Height = 812;
  ShellContainer.Margins.Left = 16;
  ShellContainer.Margins.Right = 16;
  ShellContainer.Margins.Top = 10;

  // =========================================================================
  // ORDRE DE RENDU INVERSÉ ALTOP (Du bas vers le haut)
  // =========================================================================

  // [ ÉTAPE 4 : LISTE DES UTILISATEURS (User List Container) ]
  UserListContainer = MembersForm.AddNewLayout(ShellContainer, 'UserListContainer');
  UserListContainer.Align = alTop;
  UserListContainer.Height = 400;
  UserListContainer.Margins.Top = 10;

  // Injection des membres avec notre générateur modulaire
  UserCard1 = CreateUserCard(UserListContainer, 'UserAli', 'Ali Yýlmaz', 'Administrateur', 'AY', '#22c55e', '#1d4ed8');
  UserCard2 = CreateUserCard(UserListContainer, 'UserAyse', 'Ayþe Demir', 'Dépôt Sorumlusu', 'AD', '#22c55e', '#a855f7');
  UserCard3 = CreateUserCard(UserListContainer, 'UserMehmet', 'Mehmet Kaya', 'Secrétaire', 'MK', '#ff4d6a', '#dd7b40');


  // [ ÉTAPE 3 : BARRE DE FILTRES RAPIDES ]
  FilterLayout = MembersForm.AddNewLayout(ShellContainer, 'FilterLayout');
  FilterLayout.Align = alTop;
  FilterLayout.Height = 40;
  FilterLayout.Margins.Top = 12;

  BtnFilterAll = MembersForm.AddNewProButton(FilterLayout, 'BtnFilterAll', 'Tous');
  BtnFilterAll.Align = alLeft; BtnFilterAll.Width = 65; BtnFilterAll.Height = 32;
  BtnFilterAll.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#00d4ff'); // Filtre Actif
  BtnFilterAll.clProSettings.FontColor = clAlphaColor.clHexToColor('#080d14');
  BtnFilterAll.clProSettings.FontSize = 11; BtnFilterAll.clProSettings.TextSettings.Font.Style = [fsBold];
  BtnFilterAll.clProSettings.RoundWidth = 8; BtnFilterAll.clProSettings.RoundHeight = 8;
  BtnFilterAll.SetclProSettings(BtnFilterAll.clProSettings);

  BtnFilterAdmin = MembersForm.AddNewProButton(FilterLayout, 'BtnFilterAdmin', 'Admins');
  BtnFilterAdmin.Align = alLeft; BtnFilterAdmin.Width = 75; BtnFilterAdmin.Height = 32; BtnFilterAdmin.Margins.Left = 6;
  BtnFilterAdmin.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnFilterAdmin.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  BtnFilterAdmin.clProSettings.BorderWidth = 1;
  BtnFilterAdmin.clProSettings.FontColor = clAlphaColor.clHexToColor('#6b8aaa');
  BtnFilterAdmin.clProSettings.FontSize = 11;
  BtnFilterAdmin.clProSettings.RoundWidth = 8; BtnFilterAdmin.clProSettings.RoundHeight = 8;
  BtnFilterAdmin.SetclProSettings(BtnFilterAdmin.clProSettings);

  BtnFilterDepot = MembersForm.AddNewProButton(FilterLayout, 'BtnFilterDepot', 'Dépôt');
  BtnFilterDepot.Align = alLeft; BtnFilterDepot.Width = 75; BtnFilterDepot.Height = 32; BtnFilterDepot.Margins.Left = 6;
  BtnFilterDepot.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnFilterDepot.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  BtnFilterDepot.clProSettings.BorderWidth = 1;
  BtnFilterDepot.clProSettings.FontColor = clAlphaColor.clHexToColor('#6b8aaa');
  BtnFilterDepot.clProSettings.FontSize = 11;
  BtnFilterDepot.clProSettings.RoundWidth = 8; BtnFilterDepot.clProSettings.RoundHeight = 8;
  BtnFilterDepot.SetclProSettings(BtnFilterDepot.clProSettings);

  BtnFilterSekreter = MembersForm.AddNewProButton(FilterLayout, 'BtnFilterSekreter', 'Secrétaires');
  BtnFilterSekreter.Align = alClient; BtnFilterSekreter.Height = 32; BtnFilterSekreter.Margins.Left = 6;
  BtnFilterSekreter.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnFilterSekreter.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  BtnFilterSekreter.clProSettings.BorderWidth = 1;
  BtnFilterSekreter.clProSettings.FontColor = clAlphaColor.clHexToColor('#6b8aaa');
  BtnFilterSekreter.clProSettings.FontSize = 11;
  BtnFilterSekreter.clProSettings.RoundWidth = 8; BtnFilterSekreter.clProSettings.RoundHeight = 8;
  BtnFilterSekreter.SetclProSettings(BtnFilterSekreter.clProSettings);


  // [ ÉTAPE 2 : BARRE DE RECHERCHE (SearchEdit) ]
  SearchLayout = MembersForm.AddNewLayout(ShellContainer, 'SearchLayout');
  SearchLayout.Align = alTop;
  SearchLayout.Height = 46;
  SearchLayout.Margins.Top = 12;

  SearchEdit = MembersForm.AddNewProEdit(SearchLayout, 'SearchEdit', 'Rechercher un membre...');
  SearchEdit.Align = alClient;
  SearchEdit.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  SearchEdit.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  SearchEdit.clProSettings.BorderWidth = 1;
  SearchEdit.clProSettings.FontColor = clAlphaColor.clHexToColor('#e8eef5');
  SearchEdit.clProSettings.FontSize = 12;
  SearchEdit.clProSettings.RoundWidth = 10; SearchEdit.clProSettings.RoundHeight = 10;
  SearchEdit.SetclProSettings(SearchEdit.clProSettings);


  // [ ÉTAPE 1 : HEADER GESTION DES MEMBRES ]
  HeaderLayout = MembersForm.AddNewLayout(ShellContainer, 'HeaderLayout');
  HeaderLayout.Align = alTop;
  HeaderLayout.Height = 55;

  // Bouton Retour (Gauche)
  label1 = MembersForm.AddNewProLabel(HeaderLayout, 'label1', 'GESTIONNAIRES DES UTILISATEURS');
  label1.Align = alTop;
  label1.Margins.Left = 14; 
  label1.Margins.Top = 16;
  label1.clProSettings.FontColor = clAlphaColor.clHexToColor('#446580');
  label1.clProSettings.FontSize = 12;
  label1.clProSettings.TextSettings.Font.Style = [fsBold];
  label1.SetclProSettings(label1.clProSettings);


  // Titre "MEMBRES" (Centre)
  LblHeaderTitle = MembersForm.AddNewProLabel(HeaderLayout, 'LblHeaderTitle', 'Utilisateurs & roles');
  LblHeaderTitle.Align = alTop;
  LblHeaderTitle.Margins.Left = 14; 
  LblHeaderTitle.Height = 40;
  LblHeaderTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#e8eef5');
  LblHeaderTitle.clProSettings.FontSize = 30;
  LblHeaderTitle.clProSettings.TextSettings.Font.Style = [fsBold];
  LblHeaderTitle.SetclProSettings(LblHeaderTitle.clProSettings);
  
  
  // [ ÉTAPE x : HEADER GESTION DES MEMBRES actifs ]
  HeaderLayoutactif = MembersForm.AddNewLayout(ShellContainer, 'HeaderLayoutactif');
  HeaderLayoutactif.Align = alTop;
  HeaderLayoutactif.Height = 55;
  
  
  // ======================================================
  // LAYOUT 2 (Toplam Kullanýcý) - KUSURSUZ HÝZALAMA VE NOKTA
  // ======================================================
  layout2 = MembersForm.AddNewLayout(HeaderLayoutactif, 'layout2');
  layout2.Align = alLeft;
  layout2.Height = 55;
  layout2.Width = 120; 
  layout2.Margins.Left = 14; 
  
  // Mavi Nokta
  DotCyan = MembersForm.AddNewProPanel(layout2, 'DotCyan');
  DotCyan.Align = alLeft; 
  DotCyan.Width = 8; 
  DotCyan.Height = 8;
  DotCyan.Margins.Right = 6;
  DotCyan.Margins.Top = 24;      // Dikey ortalama için üst boþluk
  DotCyan.Margins.Bottom = 23;   // UZAMAYI ENGELLEYEN ALT BOÞLUK (55-24-23 = 8px yükseklik)
  DotCyan.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#00d4ff'); 
  DotCyan.clProSettings.RoundWidth = 4; 
  DotCyan.clProSettings.RoundHeight = 4;
  DotCyan.SetclProSettings(DotCyan.clProSettings);
  
  label2 = MembersForm.AddNewProLabel(layout2, 'label2', '10 Kullanýcý');
  label2.Align = alLeft; 
  label2.Width = 90; 
  label2.Height = 20;
  label2.Margins.Top = 18;       // Metin dikey merkezleme
  label2.Margins.Bottom = 17;    // Metin dikey merkezleme alt sýnýr
  label2.clProSettings.FontColor = clAlphaColor.clHexToColor('#00d4ff');
  label2.clProSettings.FontSize = 14; 
  label2.clProSettings.TextSettings.Font.Style = [fsBold];
  label2.SetclProSettings(label2.clProSettings);

  
  // ======================================================
  // LAYOUT 3 (Aktif Kullanýcý) - KUSURSUZ HÝZALAMA VE NOKTA
  // ======================================================
  layout3 = MembersForm.AddNewLayout(HeaderLayoutactif, 'layout3');
  layout3.Align = alLeft;
  layout3.Height = 55;
  layout3.Width = 110; 
  layout3.Margins.Left = 14; 
  
  // Yeþil Nokta (Önce nokta, sonra yazý eklendi)
  DotGreen = MembersForm.AddNewProPanel(layout3, 'DotGreen');
  DotGreen.Align = alLeft; 
  DotGreen.Width = 8; 
  DotGreen.Height = 8;
  DotGreen.Margins.Right = 6;
  DotGreen.Margins.Top = 24;      // Dikey ortalama için üst boþluk
  DotGreen.Margins.Bottom = 23;   // UZAMAYI ENGELLEYEN ALT BOÞLUK (55-24-23 = 8px yükseklik)
  DotGreen.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4ade80');
  DotGreen.clProSettings.RoundWidth = 4; 
  DotGreen.clProSettings.RoundHeight = 4;
  DotGreen.SetclProSettings(DotGreen.clProSettings);

  label3 = MembersForm.AddNewProLabel(layout3, 'label3', '5 Aktif');
  label3.Align = alLeft; 
  label3.Width = 80; 
  label3.Height = 20;
  label3.Margins.Top = 18;       // Metin dikey merkezleme
  label3.Margins.Bottom = 17;    // Metin dikey merkezleme alt sýnýr
  label3.clProSettings.FontColor = clAlphaColor.clHexToColor('#4ade80');
  label3.clProSettings.FontSize = 14; 
  label3.clProSettings.TextSettings.Font.Style = [fsBold];
  label3.SetclProSettings(label3.clProSettings);


  // ======================================================
  // LAYOUT 4 (Ýnaktif Kullanýcý) - KUSURSUZ HÝZALAMA VE NOKTA
  // ======================================================
  layout4 = MembersForm.AddNewLayout(HeaderLayoutactif, 'layout4');
  layout4.Align = alLeft;
  layout4.Height = 55;
  layout4.Width = 110; 
  layout4.Margins.Left = 14; 
  
  // Turuncu Nokta (Önce nokta, sonra yazý eklendi)
  DotOrange = MembersForm.AddNewProPanel(layout4, 'DotOrange');
  DotOrange.Align = alLeft; 
  DotOrange.Width = 8; 
  DotOrange.Height = 8;
  DotOrange.Margins.Right = 6;
  DotOrange.Margins.Top = 24;      // Dikey ortalama için üst boþluk
  DotOrange.Margins.Bottom = 23;   // UZAMAYI ENGELLEYEN ALT BOÞLUK (55-24-23 = 8px yükseklik)
  DotOrange.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#fb923c');
  DotOrange.clProSettings.RoundWidth = 4; 
  DotOrange.clProSettings.RoundHeight = 4;
  DotOrange.SetclProSettings(DotOrange.clProSettings);

  label4 = MembersForm.AddNewProLabel(layout4, 'label4', '5 Ýnaktif');
  label4.Align = alLeft; 
  label4.Width = 80; 
  label4.Height = 20;
  label4.Margins.Top = 18;       // Metin dikey merkezleme
  label4.Margins.Bottom = 17;    // Metin dikey merkezleme alt sýnýr
  label4.clProSettings.FontColor = clAlphaColor.clHexToColor('#fb923c');
  label4.clProSettings.FontSize = 14; 
  label4.clProSettings.TextSettings.Font.Style = [fsBold];
  label4.SetclProSettings(label4.clProSettings);


  // --- CONFIGURATION DU TIMER DE RESPIRATION ---
  PulsationState = True;
  TimerPulsation = MembersForm.AddNewTimer(MembersForm, 'TimerPulsation', 750); // Toutes les 750ms pour une transition douce
  TimerPulsation.Enabled = True;
  MembersForm.AddNewEvent(TimerPulsation, tbeOnTimer, 'OnTimerRespiration');

  
  // [ ÉTAPE 0 : BARRE D'ÉTAT SYSTÈME (Status Bar) ]
  StatusBarLayout = MembersForm.AddNewLayout(ShellContainer, 'StatusBarLayout');
  StatusBarLayout.Align = alTop;
  StatusBarLayout.Height = 35;


  // =========================================================================
  // BARRE DE NAVIGATION INFÉRIEURE (Tab Bar Active sur "Users")
  // =========================================================================
  TabBarLayout = MembersForm.AddNewLayout(MembersForm, 'TabBarLayout');
  TabBarLayout.Align = alBottom; TabBarLayout.Height = 58;
  
  BtnTabDash = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabDash', 'Dashboard');
  BtnTabDash.Align = alLeft; BtnTabDash.Width = 74;
  BtnTabDash.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabDash.clProSettings.FontColor = clAlphaColor.clHexToColor('#3d5a7a');
  BtnTabDash.clProSettings.FontSize = 9;
  BtnTabDash.SetclProSettings(BtnTabDash.clProSettings);

  BtnTabUsers = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabUsers', 'Membres');
  BtnTabUsers.Align = alLeft; BtnTabUsers.Width = 74;
  BtnTabUsers.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabUsers.clProSettings.FontColor = clAlphaColor.clHexToColor('#00d4ff'); // Actif (Bleu Glowing)
  BtnTabUsers.clProSettings.FontSize = 9; 
  BtnTabUsers.clProSettings.TextSettings.Font.Style = [fsBold];
  BtnTabUsers.SetclProSettings(BtnTabUsers.clProSettings);

  BtnTabStock = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabStock', 'Stock');
  BtnTabStock.Align = alLeft; BtnTabStock.Width = 74;
  BtnTabStock.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabStock.clProSettings.FontColor = clAlphaColor.clHexToColor('#3d5a7a');
  BtnTabStock.clProSettings.FontSize = 9; BtnTabStock.SetclProSettings(BtnTabStock.clProSettings);

  BtnTabReports = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabReports', 'Reports');
  BtnTabReports.Align = alLeft; BtnTabReports.Width = 74;
  BtnTabReports.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabReports.clProSettings.FontColor = clAlphaColor.clHexToColor('#3d5a7a');
  BtnTabReports.clProSettings.FontSize = 9; BtnTabReports.SetclProSettings(BtnTabReports.clProSettings);

  BtnTabSettings = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabSettings', 'Settings');
  BtnTabSettings.Align = alClient;
  BtnTabSettings.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabSettings.clProSettings.FontColor = clAlphaColor.clHexToColor('#3d5a7a');
  BtnTabSettings.clProSettings.FontSize = 9; 
  BtnTabSettings.SetclProSettings(BtnTabSettings.clProSettings);

  MembersForm.Run; 
  
}

https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">



Sayfayý Yazdýr | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net