Sayfayı Yazdır | Pencereyi Kapat

bilgisayar ve telefon ekranında butonların kayması

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=1490
Tarih: 08 Mayıs 2026 Saat 15:45
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: bilgisayar ve telefon ekranında butonların kayması
Mesajı Yazan: rümeysa
Konu: bilgisayar ve telefon ekranında butonların kayması
Mesaj Tarihi: 08 Mayıs 2026 Saat 12:44
Var
  MainForm: TclForm;
  ImgMain, ImgQuestion: TclImage;
  BtnMag1, BtnMag2, BtnMag3, BtnMag4, BtnMag5, BtnMag6: TclProButton;
  BtnA, BtnT, BtnG, BtnC: TclProButton;
  QuestionPanel, TopHUD, CardPanel, ButtonPanel: TclProPanel;
  LblScore, LblHealth, LblTitle, LblSub: TclProLabel;
  score, health, solved: Integer;
  currentAnswer, currentMag: String;
  done1, done2, done3, done4, done5, done6: Boolean;

void UpdateHUD
{
  LblScore.Text = 'SKOR: ' + IntToStr(score);
  if (health == 3) LblHealth.Text = 'HAK: ❤️❤️❤️';
  else if (health == 2) LblHealth.Text = 'HAK: ❤️❤️';
  else if (health == 1) LblHealth.Text = 'HAK: ❤️';
  else LblHealth.Text = 'HAK: BİTTİ';

  if (done1 == True) BtnMag1.Visible = False; else BtnMag1.Visible = True;
  if (done2 == True) BtnMag2.Visible = False; else BtnMag2.Visible = True;
  if (done3 == True) BtnMag3.Visible = False; else BtnMag3.Visible = True;
  if (done4 == True) BtnMag4.Visible = False; else BtnMag4.Visible = True;
  if (done5 == True) BtnMag5.Visible = False; else BtnMag5.Visible = True;
  if (done6 == True) BtnMag6.Visible = False; else BtnMag6.Visible = True;
}

void ShowQuestion
{
  ImgMain.Visible = False;
  TopHUD.Visible = False;
  BtnMag1.Visible = False; BtnMag2.Visible = False; BtnMag3.Visible = False;
  BtnMag4.Visible = False; BtnMag5.Visible = False; BtnMag6.Visible = False;
  QuestionPanel.Visible = True;
}

void ShowMain
{
  ImgMain.Visible = True;
  TopHUD.Visible = True;
  QuestionPanel.Visible = False;
  UpdateHUD;
}

void ResetGame
{
  score = 0; health = 3; solved = 0;
  done1 = False; done2 = False; done3 = False;
  done4 = False; done5 = False; done6 = False;
  ShowMain;
}

void CheckAnswer(ans: String)
{
  if (ans == currentAnswer) {
    ShowMessage('Doğru ✅');
    score = score + 20; solved = solved + 1;
    if (currentMag == '1') done1 = True;
    if (currentMag == '2') done2 = True;
    if (currentMag == '3') done3 = True;
    if (currentMag == '4') done4 = True;
    if (currentMag == '5') done5 = True;
    if (currentMag == '6') done6 = True;

    if (solved == 6) {
      ShowMessage('Tebrikler 🎉 Sarmal Tamamlandı!');
      ResetGame;
    } else ShowMain;
  } else {
    ShowMessage('Yanlış ❌');
    health = health - 1; score = score - 10;
    if (health <= 0) {
      ShowMessage('Hakkınız Bitti!');
      ResetGame;
    }
  }
  UpdateHUD;
}

void ClickA { CheckAnswer('A'); }
void ClickT { CheckAnswer('T'); }
void ClickG { CheckAnswer('G'); }
void ClickC { CheckAnswer('C'); }

void Open1 { currentMag = '1'; currentAnswer = 'T'; MainForm.setImage(ImgQuestion, ' https://resmim.net/cdn/2026/05/02/Ce0Anb.jpg" rel="nofollow - https://resmim.net/cdn/2026/05/02/Ce0Anb.jpg '); ShowQuestion; }
void Open2 { currentMag = '2'; currentAnswer = 'C'; MainForm.setImage(ImgQuestion, ' https://resmim.net/cdn/2026/05/02/Ce0uED.jpg" rel="nofollow - https://resmim.net/cdn/2026/05/02/Ce0uED.jpg '); ShowQuestion; }
void Open3 { currentMag = '3'; currentAnswer = 'G'; MainForm.setImage(ImgQuestion, ' https://resmim.net/cdn/2026/05/02/Ce0VFy.jpg" rel="nofollow - https://resmim.net/cdn/2026/05/02/Ce0VFy.jpg '); ShowQuestion; }
void Open4 { currentMag = '4'; currentAnswer = 'G'; MainForm.setImage(ImgQuestion, ' https://resmim.net/cdn/2026/05/02/Ce07uc.jpg" rel="nofollow - https://resmim.net/cdn/2026/05/02/Ce07uc.jpg '); ShowQuestion; }
void Open5 { currentMag = '5'; currentAnswer = 'A'; MainForm.setImage(ImgQuestion, ' https://resmim.net/cdn/2026/05/02/Ce0iD7.jpg" rel="nofollow - https://resmim.net/cdn/2026/05/02/Ce0iD7.jpg '); ShowQuestion; }
void Open6 { currentMag = '6'; currentAnswer = 'T'; MainForm.setImage(ImgQuestion, ' https://resmim.net/cdn/2026/05/02/Ce0RPq.jpg" rel="nofollow - https://resmim.net/cdn/2026/05/02/Ce0RPq.jpg '); ShowQuestion; }

void SetupUI
{
  MainForm = TclForm.Create(Self);
  score = 0; health = 3; solved = 0;

  // ANA EKRAN TASARIMI 
  ImgMain = MainForm.AddNewImage(MainForm, 'ImgMain');
  ImgMain.Align = alClient;
  MainForm.setImage(ImgMain, ' https://resmim.net/cdn/2026/05/07/Cri56b.jpg" rel="nofollow - https://resmim.net/cdn/2026/05/07/Cri56b.jpg ');

  // Skor ve Hak Paneli (Sol Üste Sabitlendi)
  TopHUD = MainForm.AddNewProPanel(MainForm, 'TopHUD');
  TopHUD.Align = alNone;
  TopHUD.SetBounds(20, 20, 150, 80);
  
  LblScore = MainForm.AddNewProLabel(TopHUD, 'LblScore', 'SKOR: 0');
  LblScore.Align = alTop; LblScore.Margins.Top = 10; LblScore.Margins.Left = 10;
  
  LblHealth = MainForm.AddNewProLabel(TopHUD, 'LblHealth', 'HAK: ❤️❤️❤️');
  LblHealth.Align = alTop; LblHealth.Margins.Top = 5; LblHealth.Margins.Left = 10;

  // BÜYÜTEÇLER (Koordinatlar tam sarmal üzerine göre )
  // Sol taraf
  BtnMag1 = MainForm.AddNewProButton(MainForm, 'BtnMag1', '🔍');
  BtnMag1.Align = alNone; BtnMag1.SetBounds(50, 180, 55, 55); MainForm.AddNewEvent(BtnMag1, tbeOnClick, 'Open1');

  BtnMag2 = MainForm.AddNewProButton(MainForm, 'BtnMag2', '🔍');
  BtnMag2.Align = alNone; BtnMag2.SetBounds(50, 410, 55, 55); MainForm.AddNewEvent(BtnMag2, tbeOnClick, 'Open2');

  BtnMag3 = MainForm.AddNewProButton(MainForm, 'BtnMag3', '🔍');
  BtnMag3.Align = alNone; BtnMag3.SetBounds(50, 640, 55, 55); MainForm.AddNewEvent(BtnMag3, tbeOnClick, 'Open3');

  // Sağ taraf
  BtnMag4 = MainForm.AddNewProButton(MainForm, 'BtnMag4', '🔍');
  BtnMag4.Align = alNone; BtnMag4.SetBounds(300, 280, 55, 55); MainForm.AddNewEvent(BtnMag4, tbeOnClick, 'Open4');

  BtnMag5 = MainForm.AddNewProButton(MainForm, 'BtnMag5', '🔍');
  BtnMag5.Align = alNone; BtnMag5.SetBounds(300, 510, 55, 55); MainForm.AddNewEvent(BtnMag5, tbeOnClick, 'Open5');

  BtnMag6 = MainForm.AddNewProButton(MainForm, 'BtnMag6', '🔍');
  BtnMag6.Align = alNone; BtnMag6.SetBounds(300, 740, 55, 55); MainForm.AddNewEvent(BtnMag6, tbeOnClick, 'Open6');

  // SORU EKRANI TASARIMI 
  QuestionPanel = MainForm.AddNewProPanel(MainForm, 'QuestionPanel');
  QuestionPanel.Align = alClient;
  QuestionPanel.Visible = False;

  LblTitle = MainForm.AddNewProLabel(QuestionPanel, 'LblTitle', 'DNA TAMAMLAMA');
  LblTitle.Align = alNone; LblTitle.SetBounds(60, 40, 280, 40);

  CardPanel = MainForm.AddNewProPanel(QuestionPanel, 'CardPanel');
  CardPanel.Align = alNone; CardPanel.SetBounds(40, 110, 320, 260);

  ImgQuestion = MainForm.AddNewImage(CardPanel, 'ImgQuestion');
  ImgQuestion.Align = alClient; ImgQuestion.Margins.Left = 10; ImgQuestion.Margins.Right = 10;

  ButtonPanel = MainForm.AddNewProPanel(QuestionPanel, 'ButtonPanel');
  ButtonPanel.Align = alNone; ButtonPanel.SetBounds(0, 420, 400, 280);

  // Butonlar 
  BtnA = MainForm.AddNewProButton(ButtonPanel, 'BtnA', 'A');
  BtnA.Align = alNone; BtnA.SetBounds(20, 20, 160, 90); MainForm.AddNewEvent(BtnA, tbeOnClick, 'ClickA');

  BtnT = MainForm.AddNewProButton(ButtonPanel, 'BtnT', 'T');
  BtnT.Align = alNone; BtnT.SetBounds(210, 20, 160, 90); MainForm.AddNewEvent(BtnT, tbeOnClick, 'ClickT');

  BtnG = MainForm.AddNewProButton(ButtonPanel, 'BtnG', 'G');
  BtnG.Align = alNone; BtnG.SetBounds(20, 140, 160, 90); MainForm.AddNewEvent(BtnG, tbeOnClick, 'ClickG');

  BtnC = MainForm.AddNewProButton(ButtonPanel, 'BtnC', 'C');
  BtnC.Align = alNone; BtnC.SetBounds(210, 140, 160, 90); MainForm.AddNewEvent(BtnC, tbeOnClick, 'ClickC');

  UpdateHUD;
  MainForm.Run;
}

{
  SetupUI;
}

kod açıldığında telefon ekranında büyüteçlerin yerleri istenilen gibi olurken bilgisayar ekranında büyüteçlerin yerleri kaymış olarak gözüküyor nasıl düzeltebilirim ve büyüteçler emoji şeklinde ekli biraz daha nasıl büyültülebilirim


https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" 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: kaanl0
Mesaj Tarihi: 08 Mayıs 2026 Saat 14:21
Telefon ve bilgisayarın genişlik ve uzunluk değerleri farklı olduğu için iki farklı cihazda farklı gözüküyor, Bunun için 2 yöntem önerebilirim

1. yöntem scaledlayout kullanmak aşağıda verdiğim kodu kullanıp kullanıp bütün componentlerin parentını form yerine scaledlayout'u yapacağız bu şekilde her cihazda aynı gözükecek.

var
 MyForm:TCLForm;
 ScaledLayout: TclScaledLayout;
 testButton : TclButton;

{
MyForm = TCLForm.Create(Self);

ScaledLayout = MyForm.AddNewScaledLayout(MyForm, 'ScaledLayout');
ScaledLayout.Align = alClient;
ScaledLayout.OriginalHeight = 750; 
ScaledLayout.OriginalWidth = 370;

testButton = MyForm.AddNewButton(ScaledLayout,'testButton','Click');
testButton.StyledSettings = ssFamily;
testButton.TextSettings.Font.Size = 20;
testButton.TextSettings.FontColor = clAlphaColor.clHexToColor('#8a067c');




clRTSetProperty(MyForm,'ClientHeight',750);
clRTSetProperty(MyForm,'ClientWidth',370);
MyForm.Run;
}


2. yöntem ise bütün widht height margin değerlerini responsive yapmak, aşağıda attığım şekilde mainformun boyutuna göre yüzdelik olarak hesaplıyor. Marginlerde top ve bottomlarda clheight left ve rightlarda clwidht kullanmalısın

  TitlePnl.Height = (MainForm.clHeight*18)/100;
  TitlePnl.Width = (MainForm.clWidth*100)/100;

https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" 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