İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

Delphi 7 Köşesi...

sivaspor08.09.200992 cevap16.069 görüntüleme
2008'den beri2.454 mesaj
#1
Dönen yok seferinden...
Cevaplar
2009'den beri1.676 mesaj
#2
Umarım bu köşe faydalı olur ben delphiye yeni başlıyorum,kitaptan da takip ediyorum ama çözümünde tıkandığım basit yerler olabiliyor bunlardan biriside;



Resimin aşağısındaki açık ve kapalı kontakları üstte image1,2,3,4 kontaklarınının hangisine işlem yapacaksam örneğin image1.hide dediğimde altta kapalı kontak varsa kapanmış gösterecek benim sorunum

image1 ve image2.hide devamında image3 ve image4.show bunu birtürlü yapamadım.
Yardımcı olabilecek delphi kurdu bir arkadaş var mı acaba?
2008'den beri9.100 mesaj
#3
biraz daha açık yazabilirmisin? kafamda canlandıramadım da:(
2009'den beri1.676 mesaj
#4
evowinds dedi: ↑
biraz daha açık yazabilirmisin? kafamda canlandıramadım da:(
4 adet İmage var bu imageları gizleyerek veya (Altta açık kontaklar var)
göstererek açılır kapanır yapıyorum. Bu işlemi tek kontak için rahatlıkla yapabiliyorum.
procedure TForm1.Button1Click(Sender: TObject);
begin
image1.hide
end;

end.
Ancak image1 ile birlite image2'ninde gizlenmesini;

bu ikisi gizlendiğinde de image3 ve 4'ünde gösterilmesini (image3;image4.show) yapamadım.
Yani;

procedure TForm1.Button1Click(Sender: TObject);
begin
image1.hide
image2.hide
image3.show
image4.show
end;

end.
doğrusu nedir umarım anlatabildim. Kaç gündür arıyorum kaynaklardan araya virgül mü koyucam parantez açıp tırnak içerisine mi yazıcam bilmiyorum denedim olmadı zaten.
2008'den beri9.100 mesaj
#5
kodların sonuna" ;" koymayı dene, delphi de sadece "else" den önce ve bazı özel durumlarda satır sonuda ";" gelmez...
Birde eğer bu işine yaramazsa şöyle dene :
image1.visible :=True;
image2.visible :=True;
image3.visible :=False;
image4.visible :=False;
veya duruma göre tersi...
2009'den beri1.676 mesaj
#6
evowinds dedi: ↑
kodların sonuna" ;" koymayı dene, delphi de sadece "else" den önce ve bazı özel durumlarda satır sonuda ";" gelmez...
Birde eğer bu işine yaramazsa şöyle dene :
image1.visible :=True;
image2.visible :=True;
image3.visible :=False;
image4.visible :=False;
veya duruma göre tersi...
Eline sağlık Çok teşekkürler açıkladığın gibi...
2008'den beri9.100 mesaj
#7
Eğer diğer konularda da sorunun olursa yardımcı olmaya çalışırım. :)
2009'den beri1.676 mesaj
#8
evowinds dedi: ↑
Eğer diğer konularda da sorunun olursa yardımcı olmaya çalışırım. :)
Ama bıkarsın, aslında tam konuya hakim bir programcıya zaman zaman çok ihtiyacım oluyor bıktırmadan size sorma teklifi beni çok sevindirir, Size özelden de mesaj atabilir miyim takıldığım konu hakkında?
2008'den beri9.100 mesaj
#9
webrettin dedi: ↑
Ama bıkarsın, aslında tam konuya hakim bir programcıya zaman zaman çok ihtiyacım oluyor bıktırmadan size sorma teklifi beni çok sevindirir, Size özelden de mesaj atabilir miyim takıldığım konu hakkında?
tabiki, bende meraklıyım. ama fırsat bulup da vakit ayıramıyorum. elimden geldiğince yardımcı olmaya çalışırım. çalıştığım yerde arkadaşın arkadaşına-tanımadığım birine- bir program bile yazmışlığım vardır..
2009'den beri1.676 mesaj
#10
evowinds dedi: ↑
tabiki, bende meraklıyım. ama fırsat bulup da vakit ayıramıyorum. elimden geldiğince yardımcı olmaya çalışırım. çalıştığım yerde arkadaşın arkadaşına-tanımadığım birine- bir program bile yazmışlığım vardır..
Çok teşekkür ederim.
2009'den beri629 mesaj
#11
webrettin dedi: ↑
Ama bıkarsın, aslında tam konuya hakim bir programcıya zaman zaman çok ihtiyacım oluyor bıktırmadan size sorma teklifi beni çok sevindirir, Size özelden de mesaj atabilir miyim takıldığım konu hakkında?
Zaten çözmüşsünüz sorunu. If..then..else ile çözülebilir. :)

Diğer sorunları da yazın buraya. Herkes faydalansın cevaplardan.
2009'den beri1.676 mesaj
#12
Hammers dedi: ↑
Zaten çözmüşsünüz sorunu. If..then..else ile çözülebilir. :)

Diğer sorunları da yazın buraya. Herkes faydalansın cevaplardan.
Haklısın.
sivaspor Konuyu açan
2008'den beri2.454 mesaj
#13
Dönen yok seferinden...
2009'den beri1.676 mesaj
#14
Benim sorum şekilden de anlaşılacağı gibi aynı forma komut verme değilde diğer formdaki değişiklikten dolayı farklı fprma komut verme hakkında olacaktı.

Aynı formda olsaydı;

if resim2.visible:=true then resim1.visible:=true;

resim farklı formda olunca nasıl yapacağım hakkında fikrim yok yardım ederseniz sevinirim.

2009'den beri1.676 mesaj
#15
Silindi?
2007'den beri226 mesaj
#16
...
form1.resim1.visible:=False;
..
form1.button1.visible:=False;
..

şeklinde yapabilirsin form2 de "uses unit1;" yapman gerekli sadece;
2009'den beri1.676 mesaj
#17
oduncu dedi: ↑
...
form1.resim1.visible:=False;
..
form1.button1.visible:=False;
..

şeklinde yapabilirsin form2 de "uses unit1;" yapman gerekli sadece;
evet sorunu bahsettiğiniz şekilde çözdüm küçük bir fark var form1 değilde form2.button1.visible şeklinde yaptım sonuçta sizin mantığınız sorunumu çözdü. Teşekkürler.
2009'den beri1.676 mesaj
#18
Formu tam ekran yaptığımda form içerisindeki örneğin resim tam ekran olmayıp boşluklar kalıyor. Align := alclient yaptım fakat olmadı nasıl yapabilirim ?



sorunum çözüldü.

İmage nesnesi strecth:=true olmalıymış.
2009'den beri1 mesaj
#19
Registry kullanarak bilgisayara takılan USB id sinin alınması.

Ben delphide takılı bir usb nin id bilgisine ulaşacak bir kod kullanıyorum, bu kod XP de sorunsuz çalışıyor ancak Vistada ve Windows 7 de kod işe yaramıyor. XP de çalışan kod Vistada neden çalışmıyor?

Öğrenmek istediğim: "Windows Registry de bilgisayarda şuan takılı bir usb nin id bilgisine nasıl ulaşılabilir? Bu bilgi registry nin neresine 'hangi mantıkla' kayıt edilmektedir ve Bununla alakalı Vistada XPden farklı olarak ne değişti?. Yani bu bilgi Registry ağacının neresinde tutuluyor?"

iletişim: worker.db@gmail.com
Teşekkürler.
2008'den beri9.100 mesaj
#20
@worker.db; bu sorun Windows sürümleri değiştikçe meydana gelen bir durum. XP için

geçerli olan kodlar maalesef diğer sürümlerde çalışmıyor bazen. Bu kullanılan API lerle ve

dediğin gibi registry ayarları ile değişiklik gösteriyor. Mesela, XP de bulunan Documents and

Settings klasörü yerine W7 de Users adlı ayrı bir klasör var. Uyumluluk modunda

çalıştırırsan belkide bir nebze sorunun çözülür ama en sağlıklısı W7 ve Vista için geçerli

kodların yayınlanmasını beklemen...
2009'den beri1.676 mesaj
#21
Sorunumun çözümünün aslında basit olduğunu seziyorum ama tüm çabalarıma rağmen olmadı.

Formda 1 er adet edit, buton ve label var.
edite girilen tam sayılı değer butona basılınca istenen herhangi miktarda (1, 10, 24 gibi ) artacak label'a aktarılacak ve örneğin 1000'e gelince artırma sona erecek.
Bunu timerla yaptım ama birkereye mahsus artırıyor.
inc(sayi,10) yaptığımda da sonuç değişmedi. Çözümünü bilen arkadaşlarım yardım ederlerse gerçekten sevineceğim.

2007'den beri226 mesaj
#22
edit1.text:=inttostr(strtoint(edit1.text+10));
2008'den beri9.100 mesaj
#23
Timer için formun mesela OnActivate olayına yazabilirsin. Form sürekli aktif olacağından timer sürekli bunu işletir.
button onclick olayına

rakam:integer;

rakam:=strtoint(edit1.text);
label1.caption:=inttostr(rakam);

Procedure TFormActivate(Sender:Tobject)
var sayi:integer;
begin
sayi:=sayi+10;
label1.text:=inttostr(sayi);
if sayi>1000 then
timer.enabled:=false;
end;
deyip Timer ı kapatabilirsin. Not :Aklımdan yazdım...
2009'den beri1.676 mesaj
#24
oduncu dedi: ↑
edit1.text:=inttostr(strtoint(edit1.text+10));
Dediğiniz gibi de ve şekildeki gibi de yaptım ikisinde de aynı hatayı verdi nerede hata yapıyor olabilirm yardım edermisiniz?

2008'den beri9.100 mesaj
#25
webrettin dedi: ↑
Dediğiniz gibi de ve şekildeki gibi de yaptım ikisinde de aynı hatayı verdi nerede hata yapıyor olabilirm yardım edermisiniz?
Text bir veriyle nümerik bir veriyi toplamaya kalkarsan matematiksel bir ifade olmaz. Onun yerine
edit1.text:=inttostr(strtoint(edit1.text)+10); demen gerekir.
2009'den beri1.676 mesaj
#26
evowinds dedi: ↑
Timer için formun mesela OnActivate olayına yazabilirsin. Form sürekli aktif olacağından timer sürekli bunu işletir.
button onclick olayına

rakam:integer;

rakam:=strtoint(edit1.text);
label1.caption:=inttostr(rakam);

Procedure TFormActivate(Sender:Tobject)
var sayi:integer;
begin
sayi:=sayi+10;
label1.text:=inttostr(sayi);
if sayi>1000 then
timer.enabled:=false;
end;
deyip Timer ı kapatabilirsin. Not :Aklımdan yazdım...
İnşallah gün gelir bende aklımdan yazarım yazdıklarınızı çalışır hale getirmeye bakıyorum hemen teşekkürler.

bu hatayı verdi.



Çözüldü......
2008'den beri9.100 mesaj
#27
Afedersin,
sayi ile rakam ı eşitlemen gerekir. yani o veriyi bir global değişken tanımlayıp kullanman faydalı olur. Yoksa döngü içinde sürekli kendini tekrar eder.

biraz uğraşayım sana düzgün kodları yazacağım.

var
Form1: TForm1;
i:integer;
implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin
if Edit1.Text<>'0' then
begin
i:=i+10;
Label1.Caption:=IntToStr(i);
if i>1000 then
Timer1.Enabled:=False;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//if Edit1.Text<>'0..9' then
// ShowMessage('Lütfen bir değer giriniz')
//else begin
i:=StrToInt(Edit1.Text);
Label1.Caption:=Edit1.Text;
Timer1.Enabled:=True;

end;
//end;
end.
2009'den beri1.676 mesaj
#28
evowinds dedi: ↑
Afedersin,
sayi ile rakam ı eşitlemen gerekir. yani o veriyi bir global değişken tanımlayıp kullanman faydalı olur. Yoksa döngü içinde sürekli kendini tekrar eder.

biraz uğraşayım sana düzgün kodları yazacağım.
sanal olarak memnuniyetimi nasıl belli ederim tam bilmiyorum çok teşekkürler

---------- saat 23:23 eklendi ---------- önceki mesaj saat 23:20 eklenmişti ----------

evowinds dedi: ↑
Text bir veriyle nümerik bir veriyi toplamaya kalkarsan matematiksel bir ifade olmaz. Onun yerine
edit1.text:=inttostr(strtoint(edit1.text)+10); demen gerekir.
Dediğiniz şekilde yaptım Ellerinize ve yüreğinize sağlık evowinds ve
oduncu

:clap::clap::clap::clap:

Sizin bilgileriniz açılmışken anektod şeklinde bir soru daha sormak isterim. Randomla rastgele artırıp azaltabiliyoruz ama bu tam sayılar için ondalık sayılar için ne yapabilirim?
2008'den beri9.100 mesaj
#29
ondalık sayılar için istediğin ondalığa çevireceksin, bunu üniversitedeyken keşfetmiştik :D
yani 2 basamaklı ondalık istiyorsan 100'e, 3 basamaklı ondalık istiyorsan 1000'e böleceksin.

tabiki random(100) veya random(1000) demen gerekli.
2009'den beri1.676 mesaj
#30
evowinds dedi: ↑
Afedersin,
sayi ile rakam ı eşitlemen gerekir. yani o veriyi bir global değişken tanımlayıp kullanman faydalı olur. Yoksa döngü içinde sürekli kendini tekrar eder.

biraz uğraşayım sana düzgün kodları yazacağım.

var
Form1: TForm1;
i:integer;
implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin
if Edit1.Text<>'0' then
begin
i:=i+10;
Label1.Caption:=IntToStr(i);
if i>1000 then
Timer1.Enabled:=False;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//if Edit1.Text<>'0..9' then
// ShowMessage('Lütfen bir değer giriniz')
//else begin
i:=StrToInt(Edit1.Text);
Label1.Caption:=Edit1.Text;
Timer1.Enabled:=True;

end;
//end;
end.
Bunu da deniyeyim ama bunu hemen şip şak yapamam. Sindire sindire yapabilirim. ellerinize sağlık tekrar cevaba döndüğünüz için tekrar teşekkür ederim.
evowinds dedi: ↑
ondalık sayılar için istediğin ondalığa çevireceksin, bunu üniversitedeyken keşfetmiştik :D
yani 2 basamaklı ondalık istiyorsan 100'e, 3 basamaklı ondalık istiyorsan 1000'e böleceksin.
Bunuda deneyeyim.:) Gittiğim yoldan çoktan geçmiş birisiyle görüşmek keyifli.

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.